diff options
Diffstat (limited to 'controller/RethinkDB.cpp')
| -rw-r--r-- | controller/RethinkDB.cpp | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/controller/RethinkDB.cpp b/controller/RethinkDB.cpp index 2d28dab2..ec6aae4e 100644 --- a/controller/RethinkDB.cpp +++ b/controller/RethinkDB.cpp @@ -164,6 +164,9 @@ RethinkDB::RethinkDB(EmbeddedNetworkController *const nc,const Address &myAddres  					const std::string tmp = (*config)["id"];  					deleteId.append(tmp);  					table = "Member"; +				} else if (objtype == "trace") { +					record = *config; +					table = "RemoteTrace";  				} else {  					continue;  				} @@ -452,6 +455,21 @@ void RethinkDB::_memberChanged(nlohmann::json &old,nlohmann::json &member)  			_controller->onNetworkMemberUpdate(networkId,memberId);  		} +	} else if (memberId) { +		if (nw) { +			std::lock_guard<std::mutex> l(nw->lock); +			nw->members.erase(memberId); +		} +		if (networkId) { +			std::lock_guard<std::mutex> l(_networks_l); +			auto er = _networkByMember.equal_range(memberId); +			for(auto i=er.first;i!=er.second;++i) { +				if (i->second == networkId) { +					_networkByMember.erase(i); +					break; +				} +			} +		}  	}  	if ((wasAuth)&&(!isAuth)&&(networkId)&&(memberId))  | 
