foobar2000 SDK  2015-01-14
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
win32_event

#include <win-objects.h>

+ Inheritance diagram for win32_event:

Public Member Functions

 win32_event ()
 
 ~win32_event ()
 
void create (bool p_manualreset, bool p_initialstate)
 
HANDLE detach ()
 
HANDLE get () const
 
HANDLE get_handle () const
 
bool is_valid () const
 
void release ()
 
void set (HANDLE p_handle)
 
void set_state (bool p_state)
 
bool wait_for (double p_timeout_seconds)
 

Static Public Member Functions

static DWORD g_calculate_wait_time (double p_seconds)
 
static int g_twoEventWait (win32_event &ev1, win32_event &ev2, double timeout)
 
static int g_twoEventWait (HANDLE ev1, HANDLE ev2, double timeout)
 
static bool g_wait_for (HANDLE p_event, double p_timeout_seconds)
 

Private Member Functions

 win32_event (const win32_event &)
 
const win32_eventoperator= (const win32_event &)
 

Private Attributes

HANDLE m_handle
 

Detailed Description

Definition at line 120 of file win-objects.h.

Constructor & Destructor Documentation

win32_event::win32_event ( )
inline

Definition at line 122 of file win-objects.h.

122 : m_handle(NULL) {}
HANDLE m_handle
Definition: win-objects.h:152
win32_event::~win32_event ( )
inline

Definition at line 123 of file win-objects.h.

123 {release();}
void release()
win32_event::win32_event ( const win32_event )
private

Member Function Documentation

void win32_event::create ( bool  p_manualreset,
bool  p_initialstate 
)

Definition at line 194 of file win-objects.cpp.

194  {
195  release();
196  SetLastError(NO_ERROR);
197  m_handle = CreateEvent(NULL,p_manualreset ? TRUE : FALSE, p_initialstate ? TRUE : FALSE,NULL);
198  if (m_handle == NULL) throw exception_win32(GetLastError());
199 }
void release()
HANDLE m_handle
Definition: win-objects.h:152
HANDLE win32_event::detach ( )
inline

Definition at line 130 of file win-objects.h.

130 {return pfc::replace_t(m_handle,(HANDLE)NULL);}
t_type replace_t(t_type &p_var, const t_newval &p_newval)
Definition: primitives.h:682
typedef HANDLE(WINAPI *pPowerCreateRequest_t)(__in void *Context)
HANDLE m_handle
Definition: win-objects.h:152
DWORD win32_event::g_calculate_wait_time ( double  p_seconds)
static

Definition at line 207 of file win-objects.cpp.

207  {
208  DWORD time = 0;
209  if (p_seconds> 0) {
210  time = pfc::rint32(p_seconds * 1000.0);
211  if (time == 0) time = 1;
212  } else if (p_seconds < 0) {
213  time = INFINITE;
214  }
215  return time;
216 }
t_int32 rint32(double p_val)
Definition: primitives.h:712
int win32_event::g_twoEventWait ( win32_event ev1,
win32_event ev2,
double  timeout 
)
static

Definition at line 254 of file win-objects.cpp.

254  {
255  return g_twoEventWait( ev1.get_handle(), ev2.get_handle(), timeout );
256 }
HANDLE get_handle() const
Definition: win-objects.h:129
static int g_twoEventWait(win32_event &ev1, win32_event &ev2, double timeout)
int win32_event::g_twoEventWait ( HANDLE  ev1,
HANDLE  ev2,
double  timeout 
)
static

Definition at line 240 of file win-objects.cpp.

240  {
241  HANDLE h[2] = {ev1, ev2};
242  switch(WaitForMultipleObjects(2, h, FALSE, g_calculate_wait_time( timeout ) )) {
243  default:
244  pfc::crash();
245  case WAIT_TIMEOUT:
246  return 0;
247  case WAIT_OBJECT_0:
248  return 1;
249  case WAIT_OBJECT_0 + 1:
250  return 2;
251  }
252 }
typedef HANDLE(WINAPI *pPowerCreateRequest_t)(__in void *Context)
void crash()
Definition: other.cpp:105
static DWORD g_calculate_wait_time(double p_seconds)
bool win32_event::g_wait_for ( HANDLE  p_event,
double  p_timeout_seconds 
)
static

Returns true when signaled, false on timeout.

Definition at line 219 of file win-objects.cpp.

219  {
220  SetLastError(NO_ERROR);
221  DWORD status = WaitForSingleObject(p_event,g_calculate_wait_time(p_timeout_seconds));
222  switch(status) {
223  case WAIT_FAILED:
224  throw exception_win32(GetLastError());
225  default:
226  throw pfc::exception_bug_check();
227  case WAIT_OBJECT_0:
228  return true;
229  case WAIT_TIMEOUT:
230  return false;
231  }
232 }
static DWORD g_calculate_wait_time(double p_seconds)
HANDLE win32_event::get ( ) const
inline

Definition at line 128 of file win-objects.h.

128 {return m_handle;}
HANDLE m_handle
Definition: win-objects.h:152
HANDLE win32_event::get_handle ( ) const
inline

Definition at line 129 of file win-objects.h.

129 {return m_handle;}
HANDLE m_handle
Definition: win-objects.h:152
bool win32_event::is_valid ( ) const
inline

Definition at line 131 of file win-objects.h.

131 {return m_handle != NULL;}
HANDLE m_handle
Definition: win-objects.h:152
const win32_event& win32_event::operator= ( const win32_event )
private
void win32_event::release ( )

Definition at line 201 of file win-objects.cpp.

201  {
202  HANDLE temp = detach();
203  if (temp != NULL) CloseHandle(temp);
204 }
typedef HANDLE(WINAPI *pPowerCreateRequest_t)(__in void *Context)
HANDLE detach()
Definition: win-objects.h:130
void win32_event::set ( HANDLE  p_handle)
inline

Definition at line 127 of file win-objects.h.

127 {release(); m_handle = p_handle;}
void release()
HANDLE m_handle
Definition: win-objects.h:152
void win32_event::set_state ( bool  p_state)

Definition at line 234 of file win-objects.cpp.

234  {
235  PFC_ASSERT(m_handle != NULL);
236  if (p_state) SetEvent(m_handle);
237  else ResetEvent(m_handle);
238 }
HANDLE m_handle
Definition: win-objects.h:152
bool win32_event::wait_for ( double  p_timeout_seconds)
inline

Returns true when signaled, false on timeout.

Definition at line 136 of file win-objects.h.

136 {return g_wait_for(get(),p_timeout_seconds);}
static bool g_wait_for(HANDLE p_event, double p_timeout_seconds)
Returns true when signaled, false on timeout.

Field Documentation

HANDLE win32_event::m_handle
private

Definition at line 152 of file win-objects.h.


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