Cytopia
0.3
A city building simulation game
MessageQueue.inl.hxx
Go to the documentation of this file.
1
2
template
<
typename
Event>
void
MessageQueue<Event>::push
(Event &&event)
3
{
4
/* Push the event */
5
{
6
Lock<Mutex>
lock(*m_Semaphore);
7
m_Queue.push_back(event);
8
}
9
/* Notify */
10
m_OnEvent->notify_all();
11
}
12
13
template
<
typename
Event>
bool
MessageQueue<Event>::peek
(
void
) noexcept
14
{
15
Lock<Mutex>
lock(*m_Semaphore);
16
return
m_OnEvent->wait_for(lock, std::chrono::seconds::zero(), std::bind(&
MessageQueue::wakeCondition
,
this
));
17
}
18
19
template
<
typename
Event>
typename
MessageQueue<Event>::Enumerable
MessageQueue<Event>::getEnumerable
(
void
)
20
{
21
Lock<Mutex>
lock(*m_Semaphore);
22
m_OnEvent->wait(lock, std::bind(&
MessageQueue::wakeCondition
,
this
));
23
Enumerable
enumerable;
24
std::swap(enumerable, m_Queue);
25
return
enumerable;
26
}
27
28
template
<
typename
Event>
bool
MessageQueue<Event>::wakeCondition
(
void
)
const
noexcept {
return
not m_Queue.empty(); }
MessageQueue::wakeCondition
bool wakeCondition(void) const noexcept
Definition:
MessageQueue.inl.hxx:28
MessageQueue::push
void push(Event &&event)
Push an event on the Queue.
Definition:
MessageQueue.inl.hxx:2
MessageQueue::getEnumerable
Enumerable getEnumerable(void)
Definition:
MessageQueue.inl.hxx:19
MessageQueue::Enumerable
Deque< Event > Enumerable
Definition:
MessageQueue.hxx:26
MessageQueue::peek
bool peek(void) noexcept
Definition:
MessageQueue.inl.hxx:13
Lock
std::unique_lock< Semaphore > Lock
Definition:
MessageQueue.hxx:16
src
engine
MessageQueue.inl.hxx
Generated on Sun Nov 27 2022 09:50:52 for Cytopia by
1.8.17