Skip to content

Commit

Permalink
BlockchainDB implementations have names now
Browse files Browse the repository at this point in the history
In order to make things more general, BlockchainDB now has get_db_name()
which should return a string with the "name" of that type of db.
This "name" will be the subfolder name that holds that db type's files
within the monero folder.

Small bugfix: blockchain_converter was not correctly appending this in
the prior hard-coded-string implementation of the subfolder data
directory concept.
  • Loading branch information
tewinget committed Mar 14, 2015
1 parent 5d2a2b7 commit eee3ee7
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 3 deletions.
6 changes: 5 additions & 1 deletion src/blockchain_converter/blockchain_converter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,11 @@ int main(int argc, char* argv[])

blockchain = new BlockchainLMDB();

blockchain->open(default_data_path.string());
boost::filesystem::path db_path(default_data_path);

db_path /= blockchain->get_db_name();

blockchain->open(db_path.string());

for (uint64_t height, i = 0; i < (height = c.m_storage.get_current_blockchain_height()); ++i)
{
Expand Down
3 changes: 3 additions & 0 deletions src/blockchain_db/blockchain_db.h
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,9 @@ class BlockchainDB
// get all files used by this db (if any)
virtual std::vector<std::string> get_filenames() const = 0;

// return the name of the folder the db's file(s) should reside in
virtual std::string get_db_name() const = 0;


// FIXME: these are just for functionality mocking, need to implement
// RAII-friendly and multi-read one-write friendly locking mechanism
Expand Down
7 changes: 7 additions & 0 deletions src/blockchain_db/lmdb/db_lmdb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -775,6 +775,13 @@ std::vector<std::string> BlockchainLMDB::get_filenames() const
return filenames;
}

std::string BlockchainLMDB::get_db_name() const
{
LOG_PRINT_L3("BlockchainLMDB::" << __func__);

return std::string("lmdb");
}

// TODO: this?
bool BlockchainLMDB::lock()
{
Expand Down
2 changes: 2 additions & 0 deletions src/blockchain_db/lmdb/db_lmdb.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@ class BlockchainLMDB : public BlockchainDB

virtual std::vector<std::string> get_filenames() const;

virtual std::string get_db_name() const;

virtual bool lock();

virtual void unlock();
Expand Down
5 changes: 3 additions & 2 deletions src/cryptonote_core/blockchain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -231,17 +231,18 @@ bool Blockchain::init(const std::string& config_folder, bool testnet)
LOG_PRINT_L3("Blockchain::" << __func__);
CRITICAL_REGION_LOCAL(m_blockchain_lock);

// TODO: make this configurable
m_db = new BlockchainLMDB();

m_config_folder = config_folder;
m_testnet = testnet;

boost::filesystem::path folder(m_config_folder);
folder /= "lmdb";

folder /= m_db->get_db_name();

LOG_PRINT_L0("Loading blockchain from folder " << folder.c_str() << " ...");

//FIXME: update filename for BlockchainDB
const std::string filename = folder.string();
try
{
Expand Down

0 comments on commit eee3ee7

Please sign in to comment.