int main (int argc, const char *argv []) { const char *uri = argc > 1 ? argv [1] : "elvin://127.0.0.1"; Elvin elvin; Attributes *notification; Subscription *subscription; /* Try to connect, and exit if we fail */ if (!elvin_open (&elvin, uri)) { elvin_perror ("open", &elvin.error); return 1; } subscription = elvin_subscribe (&elvin, "require (Opaque)"); elvin_subscription_add_listener (subscription, sub_listener, &elvin); elvin_event_loop (&elvin); elvin_close (&elvin); return 0; }
mama_status avisBridgeMamaTransport_create (transportBridge* result, const char* name, mamaTransport mamaTport ) { mama_status status; avisBridgeImpl* avisBridge = NULL; avisTransportBridge* transport = NULL; mamaBridgeImpl* bridgeImpl = NULL; const char* url = NULL; transport = (avisTransportBridge*)calloc( 1, sizeof( avisTransportBridge ) ); if (transport == NULL) return MAMA_STATUS_NOMEM; transport->mTransport = (mamaTransport) mamaTport; bridgeImpl = mamaTransportImpl_getBridgeImpl(mamaTport); if (!bridgeImpl) { mama_log (MAMA_LOG_LEVEL_ERROR, "avisBridgeMamaTransport_create(): Could not get bridge"); free(transport); return MAMA_STATUS_PLATFORM; } status = mamaBridgeImpl_getClosure((mamaBridge) bridgeImpl, (void**) &avisBridge); if (MAMA_STATUS_OK != status) { mama_log (MAMA_LOG_LEVEL_ERROR, "avisBridgeMamaTransport_create(): Could not get Avis bridge object"); free(transport); return status; } /* create the Elvin object */ transport->mAvis = (Elvin*)calloc (1, sizeof (Elvin)); if (transport->mAvis == NULL) { mama_log (MAMA_LOG_LEVEL_ERROR, "avisBridge_createImpl(): Could not create Elvin object"); free(transport); return MAMA_STATUS_PLATFORM; } /* open the server connection */ url = getURL(name); if (url == NULL) { mama_log (MAMA_LOG_LEVEL_NORMAL, "No %s property defined for transport : %s", TPORT_PARAM, name); return MAMA_STATUS_INVALID_ARG; } if (!elvin_open(transport->mAvis, url)) { mama_log (MAMA_LOG_LEVEL_ERROR, "open failed for %s: %s", TPORT_PARAM, name); log_avis_error(MAMA_LOG_LEVEL_ERROR, transport->mAvis); avisBridgeMamaTransport_destroy((transportBridge)transport); return MAMA_STATUS_PLATFORM; } wInterlocked_initialize (&transport->mDispatching); elvin_add_close_listener(transport->mAvis, closeListener, transport); wsem_init(&transport->mAvisDispatchSem, 0, 0); *result = (transportBridge) transport; return avisTransportBridge_start(transport); }