|
@@ -71,54 +71,6 @@ FileDB::FileDB(const Identity &myId,const char *path) :
|
|
|
} catch ( ... ) {}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- _onlineUpdateThread = std::thread([this]() {
|
|
|
- unsigned int cnt = 0;
|
|
|
- while (this->_running) {
|
|
|
- std::this_thread::sleep_for(std::chrono::microseconds(100));
|
|
|
- if ((++cnt % 20) == 0) { // 5 seconds
|
|
|
- std::lock_guard<std::mutex> l(this->_online_l);
|
|
|
- if (!this->_running) return;
|
|
|
- if (this->_onlineChanged) {
|
|
|
- char p[4096],atmp[64];
|
|
|
- for(auto nw=this->_online.begin();nw!=this->_online.end();++nw) {
|
|
|
- OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "%.16llx-online.json",_networksPath.c_str(),(unsigned long long)nw->first);
|
|
|
- FILE *f = fopen(p,"wb");
|
|
|
- if (f) {
|
|
|
- fprintf(f,"{");
|
|
|
- const char *memberPrefix = "";
|
|
|
- for(auto m=nw->second.begin();m!=nw->second.end();++m) {
|
|
|
- fprintf(f,"%s\"%.10llx\":{" ZT_EOL_S,memberPrefix,(unsigned long long)m->first);
|
|
|
- memberPrefix = ",";
|
|
|
- InetAddress lastAddr;
|
|
|
- const char *timestampPrefix = " ";
|
|
|
- int cnt = 0;
|
|
|
- for(auto ts=m->second.rbegin();ts!=m->second.rend();) {
|
|
|
- if (cnt < 25) {
|
|
|
- if (lastAddr != ts->second) {
|
|
|
- lastAddr = ts->second;
|
|
|
- fprintf(f,"%s\"%lld\":\"%s\"" ZT_EOL_S,timestampPrefix,(long long)ts->first,ts->second.toString(atmp));
|
|
|
- timestampPrefix = ",";
|
|
|
- ++cnt;
|
|
|
- ++ts;
|
|
|
- } else {
|
|
|
- ts = std::map<int64_t,InetAddress>::reverse_iterator(m->second.erase(std::next(ts).base()));
|
|
|
- }
|
|
|
- } else {
|
|
|
- ts = std::map<int64_t,InetAddress>::reverse_iterator(m->second.erase(std::next(ts).base()));
|
|
|
- }
|
|
|
- }
|
|
|
- fprintf(f,"}");
|
|
|
- }
|
|
|
- fprintf(f,"}" ZT_EOL_S);
|
|
|
- fclose(f);
|
|
|
- }
|
|
|
- }
|
|
|
- this->_onlineChanged = false;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
}
|
|
|
|
|
|
FileDB::~FileDB()
|
|
@@ -195,8 +147,6 @@ void FileDB::eraseNetwork(const uint64_t networkId)
|
|
|
char p[16384];
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "%.16llx.json",_networksPath.c_str(),networkId);
|
|
|
OSUtils::rm(p);
|
|
|
- OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "%.16llx-online.json",_networksPath.c_str(),networkId);
|
|
|
- OSUtils::rm(p);
|
|
|
OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "%.16llx" ZT_PATH_SEPARATOR_S "member",_networksPath.c_str(),(unsigned long long)networkId);
|
|
|
OSUtils::rmDashRf(p);
|
|
|
_networkChanged(network,nullJson,true);
|