RunicVTT Open Source Virtual Tabletop for TTRPG using P2P
Loading...
Searching...
No Matches
MessageQueue< T > Class Template Reference

#include <MessageQueue.h>

Inheritance diagram for MessageQueue< T >:
Collaboration diagram for MessageQueue< T >:

Public Member Functions

void push (T value)
 
pop ()
 
bool try_pop (T &value)
 

Private Attributes

std::queue< T > queue_
 
std::mutex mutex_
 
std::condition_variable condition_
 

Detailed Description

template<typename T>
class MessageQueue< T >

Definition at line 8 of file MessageQueue.h.

Member Function Documentation

◆ pop()

template<typename T >
T MessageQueue< T >::pop ( )
inline

Definition at line 24 of file MessageQueue.h.

25 {
26 std::unique_lock<std::mutex> lock(mutex_);
27 condition_.wait(lock, [this]
28 { return !queue_.empty(); });
29 T value = std::move(queue_.front());
30 queue_.pop();
31 return value;
32 }
std::queue< T > queue_
std::condition_variable condition_
std::mutex mutex_

◆ push()

template<typename T >
void MessageQueue< T >::push ( T value)
inline

Definition at line 16 of file MessageQueue.h.

17 {
18 std::unique_lock<std::mutex> lock(mutex_);
19 queue_.push(std::move(value));
20 lock.unlock();
21 condition_.notify_one();
22 }
Here is the caller graph for this function:

◆ try_pop()

template<typename T >
bool MessageQueue< T >::try_pop ( T & value)
inline

Definition at line 34 of file MessageQueue.h.

35 {
36 std::unique_lock<std::mutex> lock(mutex_);
37 if (queue_.empty())
38 {
39 return false;
40 }
41 value = std::move(queue_.front());
42 queue_.pop();
43 return true;
44 }
Here is the caller graph for this function:

Member Data Documentation

◆ condition_

template<typename T >
std::condition_variable MessageQueue< T >::condition_
private

Definition at line 13 of file MessageQueue.h.

◆ mutex_

template<typename T >
std::mutex MessageQueue< T >::mutex_
private

Definition at line 12 of file MessageQueue.h.

◆ queue_

template<typename T >
std::queue<T> MessageQueue< T >::queue_
private

Definition at line 11 of file MessageQueue.h.


The documentation for this class was generated from the following file: