#include <deque>
#include <unordered_map>
#include <unordered_set>
-#include <queue>
#include <random>
#include <memory>
#include <thread>
#include <mutex>
#include <iostream>
+#include <shared_mutex>
#include "TSLQueue.hpp"
#include "UDPC.h"
std::thread thread;
std::atomic_bool threadRunning;
std::mutex conMapMutex;
- std::mutex peerPKWhitelistMutex;
+ std::shared_mutex peerPKWhitelistMutex;
std::chrono::milliseconds threadedSleepTime;
unsigned char sk[crypto_sign_SECRETKEYBYTES];
recvBuf + UDPC_MIN_HEADER_SIZE + 4,
crypto_sign_PUBLICKEYBYTES);
{
- std::lock_guard<std::mutex>
+ std::shared_lock<std::shared_mutex>
pkWhitelistLock(peerPKWhitelistMutex);
if(!peerPKWhitelist.empty()
&& peerPKWhitelist.find(
recvBuf + UDPC_MIN_HEADER_SIZE + 4,
crypto_sign_PUBLICKEYBYTES);
{
- std::lock_guard<std::mutex>
+ std::shared_lock<std::shared_mutex>
pkWhitelistLock(peerPKWhitelistMutex);
if(!peerPKWhitelist.empty()
&& peerPKWhitelist.find(
return 0;
}
- std::lock_guard<std::mutex> pkWhitelistLock(c->peerPKWhitelistMutex);
+ std::unique_lock<std::shared_mutex> pkWhitelistLock(c->peerPKWhitelistMutex);
auto result = c->peerPKWhitelist.insert(UDPC::PKContainer(pk));
if(result.second) {
return c->peerPKWhitelist.size();
return 0;
}
- std::lock_guard<std::mutex> pkWhitelistLock(c->peerPKWhitelistMutex);
+ std::shared_lock<std::shared_mutex> pkWhitelistLock(c->peerPKWhitelistMutex);
if(c->peerPKWhitelist.find(UDPC::PKContainer(pk)) != c->peerPKWhitelist.end()) {
return 1;
}
return 0;
}
- std::lock_guard<std::mutex> pkWhitelistLock(c->peerPKWhitelistMutex);
+ std::unique_lock<std::shared_mutex> pkWhitelistLock(c->peerPKWhitelistMutex);
if(c->peerPKWhitelist.erase(UDPC::PKContainer(pk)) != 0) {
return 1;
}
return 0;
}
- std::lock_guard<std::mutex> pkWhitelistLock(c->peerPKWhitelistMutex);
+ std::unique_lock<std::shared_mutex> pkWhitelistLock(c->peerPKWhitelistMutex);
c->peerPKWhitelist.clear();
return 1;
}