c-ipfs/include/ipfs/repo/config/config.h

97 lines
2.6 KiB
C
Raw Permalink Normal View History

2016-10-27 01:14:07 +00:00
#ifndef __CONFIG_H__
#define __CONFIG_H__
#include "libp2p/db/datastore.h"
2016-10-27 18:11:34 +00:00
#include "identity.h"
#include "swarm.h"
#include "bootstrap_peers.h"
#include "addresses.h"
#include "gateway.h"
#include "replication.h"
struct MDNS {
int enabled;
int interval;
};
struct Discovery {
struct MDNS mdns;
};
struct Mounts {
char* ipfs;
char* ipns;
};
struct Ipns {
int resolve_cache_size;
};
struct Reprovider {
char* interval;
};
2016-10-27 01:14:07 +00:00
struct RepoConfig {
struct Identity* identity;
struct Datastore* datastore;
struct Filestore* filestore;
struct Addresses* addresses;
struct Mounts mounts;
struct Discovery discovery;
struct Ipns ipns;
struct Libp2pVector* bootstrap_peers; // MultiAddresses
2016-10-27 01:14:07 +00:00
//struct tour tour;
struct Gateway* gateway;
2016-10-27 01:14:07 +00:00
//struct supernode_routing supernode_client_config;
//struct api api;
struct Reprovider reprovider;
struct Replication* replication;
2016-10-27 01:14:07 +00:00
};
2016-10-27 18:11:34 +00:00
/**
* provide the full path of the config file, given the directory.
* NOTE: This allocates memory for result. Make sure to clean up after yourself.
* @param path the path to the config file (without the actual file name)
* @param result the full filename including the path
* @returns true(1) on success, false(0) otherwise
*/
int repo_config_get_file_name(char* path, char** result);
2016-10-27 18:11:34 +00:00
/***
* Returns the path "extension" relative to the configuration root.
* If an empty string is provided for config_root, the default root
* is used.
* @param config_root the path to the root of the configuration
* @param extension the extension to add to the path
* @param result the result of config_root with extension appended
* @param max_len the max length of the result
* @returns true(1) if everything went okay, false(0) otherwise
*/
int config_path(char* config_root, char* extension, char* result, int max_len);
/***
* create a configuration based on the passed in parameters
* @param config the configuration struct
* @param num_bits_for_keypair number of bits for the key pair
* @param swarm_port port for swarm
* @param bootstrap_peers a vector of Multiaddress of fellow peers
* @returns true(1) on success, otherwise 0
*/
int ipfs_repo_config_init(struct RepoConfig* config, unsigned int num_bits_for_keypair, const char* repo_path, int swarm_port, struct Libp2pVector *bootstrap_peers);
/***
* Initialize memory for a RepoConfig struct
* @param config the structure to initialize
* @returns true(1) on success
*/
int ipfs_repo_config_new(struct RepoConfig** config);
2016-11-02 18:44:56 +00:00
/***
* free all resources that were allocated to store config information
* @param config the config
* @returns true(1)
*/
int ipfs_repo_config_free(struct RepoConfig* config);
2016-11-02 18:44:56 +00:00
2016-10-27 01:14:07 +00:00
#endif