-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMessageQueue.cpp
More file actions
33 lines (30 loc) · 794 Bytes
/
Copy pathMessageQueue.cpp
File metadata and controls
33 lines (30 loc) · 794 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "MessageQueue.h"
namespace sh::network
{
SH_NET_API void MessageQueue::Push(NetworkContext::Message&& msg)
{
std::lock_guard<std::mutex> lock{ mu };
msgQueue.push(std::move(msg));
}
SH_NET_API auto MessageQueue::Pop() -> std::optional<NetworkContext::Message>
{
if (!mu.try_lock())
return {};
std::lock_guard<std::mutex> lock{ mu, std::adopt_lock };
if (msgQueue.empty())
return {};
NetworkContext::Message msg{ std::move(msgQueue.front()) };
msgQueue.pop();
return msg;
}
SH_NET_API auto MessageQueue::IsEmpty() const -> bool
{
std::lock_guard<std::mutex> lock{ mu };
return msgQueue.empty();
}
SH_NET_API auto MessageQueue::GetSize() const -> std::size_t
{
std::lock_guard<std::mutex> lock{ mu };
return msgQueue.size();
}
}//namespace