c-libp2p/include/libp2p/db/filestore.h

51 lines
1.3 KiB
C

#pragma once
#include <stdint.h>
/***
* Interface to data storage
*/
struct Filestore {
// generic connection and status variables for the datastore
void* handle; // a handle to the filesstore (a FSRepo struct)
// function pointers for datastore operations
/**
* Retrieves a protobuf'd node from the disk
* @param key the key
* @param key_size the key size
* @param data the protobuf'd results
* @param data_size the size of the results
* @param filestore a reference to the filestore struct
*/
int (*node_get)(const unsigned char* key, size_t key_size,
void** data, size_t *data_size, const struct Filestore* filestore);
};
/***
* Initialize the structure of the filestore to default settings. Used for
* creating a new filestore on the disk.
* @param filestore the struct to initialize
* @param config_root the path to the root of IPFS
* @returns true(1) on success
*/
int libp2p_filestore_init(struct Filestore* filestore, const char* config_root);
/***
* initialize the structure of the filestore
* @param filestore the struct to initialize
* @returns true(1) on success
*/
struct Filestore* libp2p_filestore_new();
/***
* deallocate the memory and clear resources from a filestore_init
* @param filestore the struct to deallocate
* @returns true(1)
*/
int libp2p_filestore_free(struct Filestore* datastore);