c-ipfs/include/ipfs/core/ipfs_node.h

68 lines
1.7 KiB
C
Raw Normal View History

#pragma once
#include <pthread.h>
#include "libp2p/peer/peerstore.h"
#include "libp2p/peer/providerstore.h"
2017-07-24 19:56:30 +00:00
#include "ipfs/blocks/blockstore.h"
#include "ipfs/exchange/exchange.h"
#include "ipfs/repo/config/identity.h"
#include "ipfs/repo/fsrepo/fs_repo.h"
2017-04-03 16:55:36 +00:00
#include "ipfs/routing/routing.h"
2017-09-20 14:11:01 +00:00
/***
* Holds information about the local node
*/
/***
* Modes:
* MODE_OFFLINE: Do everything yourself
* MODE_API_AVAILABLE: If you want to, the API is running
* MODE_ONLINE: You are the API
*/
enum NodeMode { MODE_OFFLINE, MODE_API_AVAILABLE, MODE_ONLINE };
2016-10-27 18:11:34 +00:00
struct IpfsNode {
2017-09-20 14:11:01 +00:00
/***
* Modes:
* MODE_OFFLINE: Do everything yourself
* MODE_API_AVAILABLE: If you want to, the API is running
* MODE_ONLINE: You are the API
*/
enum NodeMode mode;
struct Identity* identity;
struct FSRepo* repo;
struct Peerstore* peerstore;
2017-03-19 19:40:16 +00:00
struct ProviderStore* providerstore;
2017-04-03 16:55:36 +00:00
struct IpfsRouting* routing;
2017-07-24 19:56:30 +00:00
struct Blockstore* blockstore;
struct Exchange* exchange;
struct Libp2pVector* protocol_handlers;
2017-09-25 13:55:42 +00:00
struct ApiContext* api_context;
2016-10-27 18:11:34 +00:00
//struct Pinner pinning; // an interface
//struct Mount** mounts;
// TODO: Add more here
};
/***
* build an online IpfsNode
* @param repo_path where the IPFS repository directory is
* @param node the completed IpfsNode struct
* @returns true(1) on success
*/
2017-09-25 13:55:42 +00:00
int ipfs_node_online_new(const char* repo_path, struct IpfsNode** node);
2017-08-30 16:10:14 +00:00
/***
* build an offline IpfsNode
* @param repo_path where the IPFS repository directory is
* @param node the completed IpfsNode struct
* @returns true(1) on success
*/
int ipfs_node_offline_new(const char* repo_path, struct IpfsNode** node);
2017-08-30 16:10:14 +00:00
/***
* Free resources from the creation of an IpfsNode
* @param node the node to free
* @returns true(1)
*/
2017-09-25 13:55:42 +00:00
int ipfs_node_free(struct IpfsNode* node);