static void * _run_scheduler(void *data) { PARCEventScheduler *parcEventScheduler = (PARCEventScheduler *) data; parcEventScheduler_Start(parcEventScheduler, PARCEventSchedulerDispatchType_Blocking); return NULL; }
void metisDispatcher_Run(MetisDispatcher *dispatcher) { assertNotNull(dispatcher, "Parameter must be non-null"); parcEventScheduler_Start(dispatcher->Base, 0); }
void metisDispatcher_RunCount(MetisDispatcher *dispatcher, unsigned count) { assertNotNull(dispatcher, "Parameter must be non-null"); for (unsigned i = 0; i < count; i++) { parcEventScheduler_Start(dispatcher->Base, PARCEventSchedulerDispatchType_LoopOnce); } }
void metisDispatcher_RunDuration(MetisDispatcher *dispatcher, struct timeval *duration) { assertNotNull(dispatcher, "Parameter dispatcher must be non-null"); assertNotNull(duration, "Parameter duration must be non-null"); parcEventScheduler_Stop(dispatcher->Base, duration); parcEventScheduler_Start(dispatcher->Base, 0); }
LONGBOW_TEST_CASE(Global, parc_EventScheduler_Abort) { PARCEventScheduler *parcEventScheduler = parcEventScheduler_Create(); assertNotNull(parcEventScheduler, "parcEventScheduler_Create returned a null reference"); PARCEventTimer *parcEvent = parcEventTimer_Create(parcEventScheduler, PARCEventType_Persist, _abort_callback, parcEventScheduler); assertNotNull(parcEvent, "parcEventTimer_Create returned a null reference"); struct timeval fs = { 1, 0 }; parcEventTimer_Start(parcEvent, &fs); parcEventScheduler_Start(parcEventScheduler, PARCEventSchedulerDispatchType_Blocking); parcEventTimer_Destroy(&parcEvent); parcEventScheduler_Destroy(&parcEventScheduler); }
LONGBOW_TEST_CASE(Global, parc_EventSignal_Stop) { _test_event_called = 0; PARCEventScheduler *parcEventScheduler = parcEventScheduler_Create(); assertNotNull(parcEventScheduler, "parcEventScheduler_Create returned a null reference"); PARCEventSignal *parcEventSignal = parcEventSignal_Create(parcEventScheduler, SIGUSR1, PARCEventType_Signal | PARCEventType_Persist, _test_stop_event, &parcEventSignal); assertNotNull(parcEventSignal, "parcEventSignal_Create returned a null reference"); parcEventSignal_Start(parcEventSignal); kill(getpid(), SIGUSR1); parcEventScheduler_Start(parcEventScheduler, PARCEventSchedulerDispatchType_Blocking); assertTrue(_test_event_called == 1, "Event never called."); parcEventSignal_Destroy(&parcEventSignal); parcEventScheduler_Destroy(&parcEventScheduler); }
LONGBOW_TEST_CASE(Global, parc_EventScheduler_Run) { _callback_event_called = 0; PARCEventScheduler *parcEventScheduler = parcEventScheduler_Create(); assertNotNull(parcEventScheduler, "parcEventScheduler_Create returned a null reference"); PARCEventTimer *parcEvent = parcEventTimer_Create(parcEventScheduler, 0, _event_callback, (void *) &_callback_event_called); assertNotNull(parcEvent, "parcEventTimer_Create returned a null reference"); struct timeval fs = { 0, 1 }; parcEventTimer_Start(parcEvent, &fs); parcEventScheduler_Start(parcEventScheduler, PARCEventSchedulerDispatchType_Blocking); assertTrue(_callback_event_called == 1, "Timer event never called back"); parcEventTimer_Destroy(&parcEvent); parcEventScheduler_Destroy(&parcEventScheduler); }
LONGBOW_TEST_CASE(Global, parc_EventScheduler_Stop) { _callback_event_called = 0; // Create a new scheduler PARCEventScheduler *parcEventScheduler = parcEventScheduler_Create(); assertNotNull(parcEventScheduler, "parcEventScheduler_Create returned a null reference"); // Create a persistent event which will repeat until stopped PARCEventTimer *parcEvent = parcEventTimer_Create(parcEventScheduler, PARCEventType_Persist, _stop_callback, parcEventScheduler); assertNotNull(parcEvent, "parcEventTimer_Create returned a null reference"); struct timeval fs = { 1, 0 }; parcEventTimer_Start(parcEvent, &fs); parcEventScheduler_Start(parcEventScheduler, PARCEventSchedulerDispatchType_Blocking); assertTrue(_callback_event_called == 1, "Timer event never called back"); parcEventTimer_Destroy(&parcEvent); parcEventScheduler_Destroy(&parcEventScheduler); }