loggingType(WARNING),
#endif
atostrBufIndex(0),
-rng_engine()
+rng_engine(),
+mutex()
{
if(isThreaded) {
flags.set(0);
decltype(now) nextNow;
while(ctx->threadRunning.load()) {
now = std::chrono::steady_clock::now();
+ ctx->mutex.lock();
ctx->update_impl();
+ ctx->mutex.unlock();
nextNow = std::chrono::steady_clock::now();
std::this_thread::sleep_for(std::chrono::milliseconds(33) - (nextNow - now));
}
return;
}
+ std::lock_guard<std::mutex> lock(c->mutex);
+
UDPC::ConnectionData newCon(false, c);
- // TODO make thread safe by using mutex
c->conMap.insert(std::make_pair(connectionId, std::move(newCon)));
auto addrConIter = c->addrConMap.find(connectionId.addr);
if(addrConIter == c->addrConMap.end()) {
return 0;
}
+ std::lock_guard<std::mutex> lock(c->mutex);
+
auto iter = c->conMap.find(connectionId);
if(iter != c->conMap.end()) {
return iter->second.sendPkts.capacity() - iter->second.sendPkts.size();
return;
}
+ std::lock_guard<std::mutex> lock(c->mutex);
+
auto iter = c->conMap.find(destinationId);
if(iter == c->conMap.end()) {
c->log(
if(!c) {
return 0;
}
+ std::lock_guard<std::mutex> lock(c->mutex);
return c->isAcceptNewConnections.exchange(isAccepting == 0 ? false : true);
}
return 0;
}
+ std::lock_guard<std::mutex> lock(c->mutex);
+
if(dropAllWithAddr) {
auto addrConIter = c->addrConMap.find(connectionId.addr);
if(addrConIter != c->addrConMap.end()) {
if(!c) {
return 0;
}
+ std::lock_guard<std::mutex> lock(c->mutex);
return c->protocolID.exchange(id);
}
if(!c) {
return UDPC::get_empty_pinfo();
}
+
+ std::lock_guard<std::mutex> lock(c->mutex);
+
// TODO impl
return UDPC::get_empty_pinfo();
}