📄 database.cpp
字号:
#include "Database.h"#include <map>using namespace std;// Init static valuesDatabase* Database::instance = 0;// Obtains the singleton instanceDatabase* Database::getInstance() { if (instance == 0) { instance = new Database(); instance->init(); } return instance;}void Database::close() { delete instance; instance = 0;} void Database::init() { // Wait for at least 20 knodes log->debug("Initialising database: Waiting for at least 20 kNodes..."); int lastKnodesCount = -1; int x; while ((x = api->getKNodesCount()) < INIT_KNODES_COUNT) { if ( x > lastKnodesCount) { log->debug(" - #kNodes = ", x); lastKnodesCount = x; } } // If DEBUG on, publish some dummy values in kademlia extern bool DUMMY_PUBLISH; if (DUMMY_PUBLISH) { log->debug("Publishing dummy values..."); int countPublished = -1; extern map<string, string> dummyUsers; map<string, string>::iterator iter; for (iter = dummyUsers.begin(); iter != dummyUsers.end(); iter++) { string key = iter->first; string value = iter->second; log->debug("Publishing: " + key + " = " + value); countPublished = api->publish(key, value); if (countPublished > 0) { log->debug(" - OK"); } else { log->debug(" - Error"); } } }}int Database::put(const string& key, const string& value) { return api->publish(key, value);}const string Database::get(const string& key) { // If DUMMY_FAST_SEARCH=TRUE in ini file, then first the dummy users will be searched, without kademlia. extern bool DUMMY_FAST_SEARCH; if (DUMMY_FAST_SEARCH) { extern map<string, string> dummyUsers; log->debug("DEBUG Search for..." + key); map<string, string>::iterator iter = dummyUsers.find(key); // If found return it, if not, then normal search is done. if (iter != dummyUsers.end()) { return iter->second; } } // Update ini file before each search. log->debug("Searching for... " + key); api->updateIniFile(); return api->search(key);}// Private constructors and destructorDatabase::Database() { extern string kadcIniFile; log = new Logger("Database"); api = new KadCppApi(kadcIniFile);}Database::Database(const Database&) {}Database::~Database() { delete log; delete api;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -