#include "il2cpp-config.h" #if IL2CPP_THREADS_WIN32 #include "EventImpl.h" #include "WindowsHelpers.h" namespace il2cpp { namespace os { EventImpl::EventImpl(bool manualReset, bool signaled) { m_Event = ::CreateEvent(NULL, manualReset ? TRUE : FALSE, signaled ? TRUE : FALSE, NULL); IL2CPP_ASSERT(m_Event); } EventImpl::~EventImpl() { IL2CPP_ASSERT(m_Event); ::CloseHandle(m_Event); } ErrorCode EventImpl::Set() { if (::SetEvent(m_Event)) return kErrorCodeSuccess; return kErrorCodeGenFailure; } ErrorCode EventImpl::Reset() { if (::ResetEvent(m_Event)) return kErrorCodeSuccess; return kErrorCodeGenFailure; } WaitStatus EventImpl::Wait(bool interruptible) { return Wait(INFINITE, interruptible); } WaitStatus EventImpl::Wait(uint32_t ms, bool interruptible) { return il2cpp::os::win::WaitForSingleObjectAndAccountForAPCs(m_Event, ms, interruptible); } void* EventImpl::GetOSHandle() { return (void*)m_Event; } } } #endif