BlockchainDB implementations have names now

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.
This commit is contained in:
Thomas Winget 2015-03-13 21:39:27 -04:00
parent 5d2a2b7e69
commit eee3ee7073
No known key found for this signature in database
GPG Key ID: 58131A160789E630
5 changed files with 20 additions and 3 deletions

View File

@ -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)
{

View File

@ -343,6 +343,9 @@ public:
// 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

View File

@ -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()
{

View File

@ -126,6 +126,8 @@ public:
virtual std::vector<std::string> get_filenames() const;
virtual std::string get_db_name() const;
virtual bool lock();
virtual void unlock();

View File

@ -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
{