Nebula
Loading...
Searching...
No Matches
win32event.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
12#include "core/types.h"
13
14//------------------------------------------------------------------------------
15namespace Win32
16{
18{
19public:
21 Win32Event(bool manualReset=false);
23 Win32Event(void* event);
28
30 void Signal();
32 void Reset();
34 void Wait() const;
36 bool WaitTimeout(int ms) const;
38 bool Peek() const;
40 bool IsManual() const;
41
42private:
43 bool manual;
44 HANDLE event;
45};
46
47//------------------------------------------------------------------------------
50inline
51Win32Event::Win32Event(bool manualReset)
52{
53 this->event = CreateEvent(NULL, manualReset, FALSE, NULL);
54 this->manual = manualReset;
55 n_assert(0 != this->event);
56}
57
58//------------------------------------------------------------------------------
61inline
63{
64 this->manual = false;
65 this->event = event;
66}
67
68//------------------------------------------------------------------------------
71inline
73{
74 if (this->event)
75 CloseHandle(this->event);
76 this->event = rhs.event;
77 this->manual = rhs.manual;
78 rhs.event = nullptr;
79}
80
81//------------------------------------------------------------------------------
84inline
86{
87 if (this->event != nullptr)
88 {
89 CloseHandle(this->event);
90 this->event = nullptr;
91 }
92}
93
94//------------------------------------------------------------------------------
97inline void
99{
100 SetEvent(this->event);
101}
102
103//------------------------------------------------------------------------------
106inline void
108{
109 ResetEvent(this->event);
110}
111
112//------------------------------------------------------------------------------
115inline void
117{
118 WaitForSingleObject(this->event, INFINITE);
119}
120
121//------------------------------------------------------------------------------
128inline bool
129Win32Event::WaitTimeout(int timeoutInMilliSec) const
130{
131 DWORD res = WaitForSingleObject(this->event, timeoutInMilliSec);
132 return (WAIT_TIMEOUT == res) ? false : true;
133}
134
135//------------------------------------------------------------------------------
139inline bool
141{
142 DWORD res = WaitForSingleObject(this->event, 0);
143 return (WAIT_TIMEOUT == res) ? false : true;
144}
145
146//------------------------------------------------------------------------------
149inline bool
151{
152 return this->manual;
153}
154
155} // namespace Win32
156//------------------------------------------------------------------------------
157
bool manual
Definition win32event.h:43
~Win32Event()
destructor
Definition win32event.h:85
HANDLE event
Definition win32event.h:44
bool IsManual() const
Returns true if event is manually reset.
Definition win32event.h:150
Win32Event(bool manualReset=false)
constructor
Definition win32event.h:51
void Wait() const
wait for the event to become signalled
Definition win32event.h:116
void Signal()
signal the event
Definition win32event.h:98
bool Peek() const
check if event is signalled
Definition win32event.h:140
void Reset()
reset the event (only if manual reset)
Definition win32event.h:107
bool WaitTimeout(int ms) const
wait for the event with timeout in millisecs
Definition win32event.h:129
#define n_assert(exp)
Definition debug.h:50
EventId CreateEvent(const EventCreateInfo &info)
create new event
Definition vkevent.cc:42
[TODO: Describe Win32 subsystem]