Пример #1
0
mama_status
avisBridgeMamaSubscription_destroy (subscriptionBridge subscriber)
{
    mama_status status = MAMA_STATUS_OK;
    wombatQueue   queue = NULL;

    CHECK_SUBSCRIBER(subscriber);

    elvin_subscription_remove_listener(avisSub(subscriber)->mAvisSubscription, avis_callback);

    if (!elvin_unsubscribe(avisSub(subscriber)->mAvis, avisSub(subscriber)->mAvisSubscription)) {
        // NOTE: elvin_unsubscribe sometimes returns failure for no apparent reason, so dont log errors here:
        // 2011-09-02 11:59:10: avis error code=2, error msg=Illegal frame size: 61
        //log_avis_error(MAMA_LOG_LEVEL_ERROR, avisSub(subscriber)->mAvis);
        //status = MAMA_STATUS_PLATFORM;
    }

    free(avisSub(subscriber)->mAvisSubscription);

    mamaQueue_getNativeHandle(avisSub(subscriber)->mQueue, &queue);
    if (!queue)
    {
        mama_log (MAMA_LOG_LEVEL_ERROR, "avis_callback(): "
                  "Could not get event queue.");
        return MAMA_STATUS_PLATFORM;
    }

    wombatQueue_enqueue (queue, destroy_callback,
    		(void*)subscriber, NULL);

    return status;
}
Пример #2
0
static
void unsubscribeAvis (Elvin* avis,
                      void*  closure)
{
    Subscription* sub = (Subscription*) closure;

    elvin_subscription_remove_listener (sub, avis_callback);

    if (!elvin_unsubscribe(avis, sub))
    {
        mama_log (MAMA_LOG_LEVEL_ERROR, "unsubscribeAvis(): "
                                        "Failed to unsubscribe to: %s",
                                        sub->subscription_expr);
    }

    free (sub);
}