diff --git a/src/sdsdkv-config.h b/src/sdsdkv-config.h index 7fdab66..c10308d 100644 --- a/src/sdsdkv-config.h +++ b/src/sdsdkv-config.h @@ -64,6 +64,8 @@ class sdsdkv_iconfig { // std::string group_name; // + std::string db_path; + // std::string db_name; // std::string comm_protocol; @@ -87,6 +89,7 @@ class sdsdkv_iconfig { hash_be = config.hash_be; db_type = config.db_type; group_name = string(config.group_name); + db_path = string(config.db_path); db_name = string(config.db_name); comm_protocol = string(config.comm_protocol); // diff --git a/src/sdsdkv-server.h b/src/sdsdkv-server.h index a50521d..4609ed6 100644 --- a/src/sdsdkv-server.h +++ b/src/sdsdkv-server.h @@ -120,9 +120,10 @@ struct sdsdkv_server : public personality { m_provider, // TODO(skg) make unique for each server. m_config->db_name.c_str(), + m_config->db_path.c_str(), sdsdkv_iconfig::get_real_db_type(m_config->db_type), // TODO(skg) Make a user param. - SDSKV_COMPARE_DEFAULT, /* sdskv_compare_fn comp_fn */ + SDSKV_COMPARE_DEFAULT, &m_dbid ); if (rc != SDSKV_SUCCESS) return sdskv2irc(rc); diff --git a/src/sdsdkv.h b/src/sdsdkv.h index 31554b0..3b8e4a8 100644 --- a/src/sdsdkv.h +++ b/src/sdsdkv.h @@ -113,6 +113,8 @@ typedef struct sdsdkv_config { sdsdkv_config_db db_type; /** Group name. */ char *group_name; + /** If applicable, the path where database files will be written. */ + char *db_path; /** Database name. */ char *db_name; /** Communication protocol. */ diff --git a/tests/trivial.cc b/tests/trivial.cc index 2a831d2..c7a2987 100644 --- a/tests/trivial.cc +++ b/tests/trivial.cc @@ -47,6 +47,9 @@ main(int argc, char **argv) erc = MPI_Comm_size(MPI_COMM_WORLD, &numpe); if (erc != MPI_SUCCESS) ABORT(rank, erc); + char *db_path = getenv("PWD"); + if (!db_path) db_path = (char *)"/tmp"; + sdsdkv_config dkv_config = { /* .init_comm = */ MPI_COMM_WORLD, @@ -58,6 +61,8 @@ main(int argc, char **argv) SDSDKV_DB_LEVELDB, /* .group_name = */ (char *)"groupname", + /* .db_path = */ + db_path, /* .db_name = */ (char *)"TEST-DB", /* .comm_protocol */