|
|
|
@ -7,11 +7,15 @@ |
|
|
|
|
constexpr auto max_buffer = 1024; |
|
|
|
|
decltype(net::message_queue) net::message_queue{}; |
|
|
|
|
|
|
|
|
|
auto inline mutex() -> std::recursive_mutex& |
|
|
|
|
{ |
|
|
|
|
static std::recursive_mutex mutex{}; //allows for multiple thread access to our recv.
|
|
|
|
|
return mutex; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
auto net::recv(const SOCKET socket) noexcept -> std::string |
|
|
|
|
{ |
|
|
|
|
static std::recursive_mutex mutex{}; //allows for multiple thread access to our recv.
|
|
|
|
|
std::unique_lock<std::recursive_mutex> lock(mutex); |
|
|
|
|
std::unique_lock<std::recursive_mutex> lock(mutex()); |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
auto& my_queue = message_queue[socket]; |
|
|
|
@ -102,6 +106,7 @@ auto net::epilogue() noexcept -> void { WSACleanup(); } |
|
|
|
|
#else |
|
|
|
|
auto net::closesocket(const SOCKET socket) noexcept -> unsigned |
|
|
|
|
{ |
|
|
|
|
std::unique_lock<std::recursive_mutex> lock(mutex()); |
|
|
|
|
message_queue.erase(socket); |
|
|
|
|
return close(socket); |
|
|
|
|
} |
|
|
|
|