Sha256: f45b4aab2938f1b7601cc8e998e23cddd79fc85d5bbc1e5f92a74f485cb0b3df
Contents?: true
Size: 1.78 KB
Versions: 4
Compression:
Stored size: 1.78 KB
Contents
#include "wdm.h" #include "memory.h" #include "entry.h" #include "queue.h" #include "monitor.h" WDM_PMonitor wdm_monitor_new() { WDM_PMonitor monitor; monitor = WDM_ALLOC(WDM_Monitor); monitor->running = FALSE; monitor->head = NULL; monitor->monitoring_thread = INVALID_HANDLE_VALUE; monitor->changes = wdm_queue_new(); monitor->process_event = CreateEvent(NULL, TRUE, FALSE, NULL); monitor->stop_event = CreateEvent(NULL, TRUE, FALSE, NULL); if ( ! InitializeCriticalSectionAndSpinCount(&monitor->lock, 0x00000400) ) // TODO: look into the best value for spinning. { rb_raise(eWDM_Error, "Can't create a lock for the monitor"); } return monitor; } void wdm_monitor_free(WDM_PMonitor monitor) { if ( monitor->monitoring_thread != INVALID_HANDLE_VALUE ) CloseHandle(monitor->monitoring_thread); wdm_entry_list_free(monitor->head); wdm_queue_free(monitor->changes); DeleteCriticalSection(&monitor->lock); CloseHandle(monitor->process_event); // TODO: Look into why this crashes the app when exiting! CloseHandle(monitor->stop_event); free(monitor); } void wdm_monitor_update_head(WDM_PMonitor monitor, WDM_PEntry new_head) { EnterCriticalSection(&monitor->lock); new_head->next = monitor->head; monitor->head = new_head; LeaveCriticalSection(&monitor->lock); } WDM_PMonitorCallbackParam wdm_monitor_callback_param_new(WDM_PMonitor monitor, WDM_PEntry entry) { WDM_PMonitorCallbackParam param; param = WDM_ALLOC(WDM_MonitorCallbackParam); param->monitor = monitor; param->entry = entry; return param; } void wdm_monitor_callback_param_free(WDM_PMonitorCallbackParam param) { free(param); }
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
wdm-0.0.3 | ext/wdm/monitor.c |
wdm-0.0.2-x86-mingw32 | ext/wdm/monitor.c |
wdm-0.0.2-mingw32 | ext/wdm/monitor.c |
wdm-0.0.1 | ext/wdm/monitor.c |