Cytopia
0.3
A city building simulation game
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
Functions
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
w
z
~
Variables
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
y
z
Typedefs
a
c
d
e
g
i
m
n
p
r
s
t
u
v
Enumerations
Enumerator
Related Functions
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
z
Functions
b
c
d
f
g
i
m
o
p
r
s
t
w
Variables
a
c
d
g
h
i
l
m
n
r
s
t
Typedefs
a
c
d
e
f
g
i
j
l
m
n
r
s
t
v
Enumerations
Enumerator
a
b
d
e
f
g
l
m
n
p
r
s
t
u
w
z
Macros
_
c
e
i
l
n
r
s
t
v
Examples
▼
Cytopia
Todo List
►
Namespaces
►
Classes
▼
Files
▼
File List
▼
src
▼
engine
►
audio
►
basics
►
common
►
GameObjects
►
map
EventManager.cxx
►
EventManager.hxx
►
Layout.hxx
►
Map.cxx
►
Map.hxx
►
MessageQueue.hxx
MessageQueue.inl.hxx
►
ResourcesManager.cxx
►
ResourcesManager.hxx
Sprite.cxx
►
Sprite.hxx
►
TileManager.cxx
►
TileManager.hxx
►
UIManager.cxx
►
UIManager.hxx
WindowManager.cxx
►
WindowManager.hxx
►
game
►
scripting
►
services
►
util
►
windows
Game.cxx
►
Game.hxx
►
main.cxx
►
MainMenu.cxx
►
MainMenu.hxx
phc.hxx
►
File Members
►
Examples
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
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