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

📄 kadcppapi.cpp

📁 a open source project in linux for peer to peer on seep
💻 CPP
字号:
#include <iostream>#include <sstream>#include "KadCppApi.h"using namespace std;// Default valuesstring HASH_INDEX = "SIP2PEMIR";KadCppApi::KadCppApi(const string& inifilename, int leafmode, int initNetwork) {	KadClog_open("KadC.log");	// Removes KadC loggin from standard output.	log = new Logger("KadCppApi");	log->debug("Constructor called...");	context = KadC_start(const_cast<char*> (inifilename.c_str()), leafmode, initNetwork);}KadCppApi::~KadCppApi() {  log->debug("Destructor called...");  KadC_stop(&context);  delete log;}void KadCppApi::close() {	KadC_stop(&context);	log->debug("API closed...");}int KadCppApi::getKNodesCount() {  return KadC_getnknodes(&context);}int KadCppApi::getContactsCount() {  return KadC_getncontacts(&context);}int KadCppApi::getFirewallStatus() {  return KadC_getfwstatus(&context);}unsigned long KadCppApi::getExternalIP() {  return KadC_getextIP(&context); }string KadCppApi::getHashId() {  //return KadC_getourhashID(&context);  return "not yet implemented";}unsigned short KadCppApi::getUDPport() {  return KadC_getourUDPport(&context);}unsigned short KadCppApi::getTCPport() {  return KadC_getourTCPport(&context);}void KadCppApi::printStatus() {  log->debug("Status: ", context.s);  log->debug("Number of kNodes: ", KadC_getnknodes(&context));  log->debug("Number of contacts: " , KadC_getncontacts(&context));}int KadCppApi::publish(const string & key, const string & value) {  log->debug("Publishing: " + key + " = " + value);  string index = HASH_INDEX + key;  string metalist = key + "=" + value;	return KadC_republish(&context,			const_cast<char*> (index.c_str()),			const_cast<char*> (HASH_INDEX.c_str()),			const_cast<char*> (metalist.c_str()),			5, 10);}/** * Searches for a key */string KadCppApi::search(const string & key) {	log->debug("searching for key: " + key);	// Create Hash for the key	string index = HASH_INDEX + key;	string foundString = "";		// get rbt *	void * voidPtr = KadC_find(&context,			     const_cast<char*> (index.c_str()),			     "", 5, 1, 10);	// Iterate over rbt	void * iter;	KadCdictionary * pkd;		for(iter = rbt_begin(voidPtr); iter != NULL; iter = rbt_next(voidPtr, iter)) {				pkd = rbt_value(iter);		KadCtag_iter kdIter;		KadCtag_begin (pkd, &kdIter);		for (int i = 0; i < kdIter.tagsleft; i++) {			// Get Value of first tag			//return string(kdIter.tagvalue);			if (foundString == "") {				foundString = string((kdIter.tagvalue));			}			// KadCtag_next(&kdIter);		}	}		// Iterate again and free memory	for (iter = rbt_begin(voidPtr); iter != NULL; iter = rbt_begin(voidPtr)) {		pkd = rbt_value(iter);		rbt_erase(voidPtr, iter);		KadCdictionary_destroy(pkd);	}	return foundString;	// not found}// UPdate ini filevoid KadCppApi::updateIniFile() {	// TODO - simply cannot link the method name. I don't know why.	//KadC_write_inifile(&context, NULL); }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -