61 lines
1.5 KiB
C
61 lines
1.5 KiB
C
|
/***
|
||
|
* Here are the wrappers for the lightning database
|
||
|
*/
|
||
|
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
#include "lmdb.h"
|
||
|
#include "ipfs/repo/fsrepo/lmdb_datastore.h"
|
||
|
|
||
|
/**
|
||
|
* Open an lmdb database with the given parameters.
|
||
|
* Note: for now, the parameters are not used
|
||
|
* @param argc number of parameters in the following array
|
||
|
* @param argv an array of parameters
|
||
|
*/
|
||
|
int repo_fsrepro_lmdb_open(int argc, char** argv, struct Datastore* datastore) {
|
||
|
// create environment
|
||
|
struct MDB_env* mdb_env;
|
||
|
int retVal = mdb_env_create(&mdb_env);
|
||
|
if (retVal < 0) {
|
||
|
mdb_env_close(mdb_env);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
// open the environment
|
||
|
retVal = mdb_env_open(mdb_env, datastore->path, 0, 755);
|
||
|
if (retVal < 0) {
|
||
|
mdb_env_close(mdb_env);
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
datastore->handle = (void*)mdb_env;
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
/***
|
||
|
* Close an LMDB database
|
||
|
* NOTE: for now, argc and argv are not used
|
||
|
* @param argc number of parameters in the argv array
|
||
|
* @param argv parameters to be passed in
|
||
|
* @param datastore the datastore struct that contains information about the opened database
|
||
|
*/
|
||
|
int repo_fsrepo_lmdb_close(int argc, char** argv, struct Datastore* datastore) {
|
||
|
struct MDB_env* mdb_env = (struct MDB_env*)datastore->handle;
|
||
|
mdb_env_close(mdb_env);
|
||
|
free(mdb_env);
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
/***
|
||
|
* Places the LMDB methods into the datastore's function pointers
|
||
|
* @param datastore the datastore to fill
|
||
|
* @returns true(1) on success;
|
||
|
*/
|
||
|
int repo_fsrepo_lmdb_cast(struct Datastore* datastore) {
|
||
|
datastore->datastore_open = &repo_fsrepro_lmdb_open;
|
||
|
datastore->datastore_close = &repo_fsrepo_lmdb_close;
|
||
|
return 1;
|
||
|
}
|
||
|
|