⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 database.cpp

📁 a open source project in linux for peer to peer on seep
💻 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 + -