Files
TransPyC/includes/event.vp

37 lines
1002 B
Plaintext

import t, c
from stdint import *
from w32.win32base import *
from w32.win32sync import CreateEventA, SetEvent, ResetEvent, WaitForSingleObject
@t.Object
class Event:
"""Windows Event-based event object, supports manual-reset and auto-reset modes.
Usage:
evt: Event = Event(FALSE, FALSE)
evt.set()
evt.wait()
"""
handle: HANDLE
manual_reset: BOOL
def __init__(self, manual_reset: BOOL = FALSE, initial_state: BOOL = FALSE):
self.manual_reset = manual_reset
self.handle = CreateEventA(NULL, manual_reset, initial_state, NULL)
def set(self):
SetEvent(self.handle)
def clear(self):
ResetEvent(self.handle)
def is_set(self) -> BOOL:
return WaitForSingleObject(self.handle, 0) == WAIT_OBJECT_0
def wait(self, timeout_ms: ULONG = INFINITE) -> BOOL:
return WaitForSingleObject(self.handle, timeout_ms) == WAIT_OBJECT_0
def close(self):
CloseHandle(self.handle)