R-Type  2
Doom but in better
Loading...
Searching...
No Matches
Queue.cpp
Go to the documentation of this file.
1#include "Queue.hpp"
2
3void Queue::push(const GameMessage& item) {
4 std::lock_guard<std::mutex> lock(_mutex);
5 _queue.push(item);
6 _condition.notify_one();
7}
8
9std::optional<GameMessage> Queue::pop() {
10 std::lock_guard<std::mutex> lock(_mutex);
11 if (_queue.empty()) return std::nullopt;
12 GameMessage item = _queue.front();
13 _queue.pop();
14 return item;
15}
16
18 std::unique_lock<std::mutex> lock(_mutex);
19 _condition.wait(lock, [this] { return !_queue.empty(); });
20 GameMessage item = _queue.front();
21 _queue.pop();
22 return item;
23}
24
26 std::lock_guard<std::mutex> lock(_mutex);
27 return _queue.empty();
28}
void push(const GameMessage &item)
Push a GameMessage item into the queue.
Definition Queue.cpp:3
GameMessage waitAndPop()
Wait and pop a GameMessage item from the queue. This blocks until an item is available.
Definition Queue.cpp:17
bool isEmpty()
Check if the queue is empty.
Definition Queue.cpp:25
std::optional< GameMessage > pop()
Try to pop a GameMessage item from the queue.
Definition Queue.cpp:9
A structure representing a game message.