static void subscribeAvis (Elvin* avis, void* closure) { avisSubscription* impl = (avisSubscription*) closure; impl->mAvisSubscription = elvin_subscribe(impl->mAvis, makeAvisSubject(impl->mSubject)); if (impl->mAvisSubscription == NULL) { mama_log (MAMA_LOG_LEVEL_ERROR, "subscribeAvis(): " "Failed to subscribe to: %s", impl->mSubject); wsem_post (&impl->mCreateDestroySem); return; } elvin_subscription_add_listener (impl->mAvisSubscription, avis_callback, impl); mama_log (MAMA_LOG_LEVEL_FINER, "Made Avis subscription to: %s", impl->mSubject); wsem_post (&impl->mCreateDestroySem); }
static void MAMACALLTYPE startCallback (mama_status status, mamaBridge bridge, void* closure) { wsem_t* sem = (wsem_t*)closure; ASSERT_EQ (0, wsem_post (sem)); }
void mamaTimeZone_cleanUp () { if (sThreadStarted) { sThreadStarted = 0; wsem_post (&sTzSem); wthread_join (sThread, NULL); wsem_destroy (&sTzSem); } }
void* avisDispatchThread(void* closure) { avisTransportBridge* transportBridge = (avisTransportBridge*) closure; while (1 == wInterlocked_read (&transportBridge->mDispatching)) { elvin_poll (transportBridge->mAvis); if (ELVIN_ERROR_TIMEOUT == transportBridge->mAvis->error.code) { /* Timeout is acceptable and expected */ elvin_error_reset (&transportBridge->mAvis->error); } } wsem_post (&transportBridge->mAvisDispatchSem); return NULL; }