コード例 #1
0
ファイル: avis_listener.c プロジェクト: luv/avis_zmqprx
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;
}
コード例 #2
0
ファイル: sub.c プロジェクト: reed-jpm-alpert/OpenMAMA.233
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);
}
コード例 #3
0
ファイル: sub.c プロジェクト: MattMulhern/OpenMamaCassandra
mama_status
avisBridgeMamaSubscription_create (subscriptionBridge* subscriber,
                                    const char*         source,
                                    const char*         symbol,
                                    mamaTransport       transport,
                                    mamaQueue           queue,
                                    mamaMsgCallbacks    callback,
                                    mamaSubscription    subscription,
                                    void*               closure)
{
    avisSubscription* impl = NULL;
    
    if (!subscriber || !subscription || !transport )
        return MAMA_STATUS_NULL_ARG;

    impl = (avisSubscription*)calloc (1, sizeof(avisSubscription));
    if (impl == NULL)
       return MAMA_STATUS_NOMEM;

    impl->mAvis = getAvis(transport);
    if (!impl->mAvis)
       return MAMA_STATUS_INVALID_ARG;

    if (source != NULL && source[0])
    {
        impl->mSource = source;
    }
    else
    {
        impl->mSource = "";
    }

    if (symbol != NULL && symbol[0])
    {
        impl->mSymbol = symbol;
        snprintf (impl->mSubject, sizeof(impl->mSubject), "%s.%s",
                  impl->mSource, impl->mSymbol);
    }
    else
    {
        impl->mSymbol = "";
        snprintf (impl->mSubject, sizeof(impl->mSubject), "%s",
                  impl->mSource );
    }

    impl->mMamaCallback       = callback;
    impl->mMamaSubscription   = subscription;
    impl->mQueue              = queue;
    impl->mTransport          = transport;
    impl->mClosure            = closure;
    impl->mIsNotMuted         = 1;
    impl->mIsValid            = 1;

    impl->mAvisSubscription = elvin_subscribe(impl->mAvis, makeAvisSubject(impl->mSubject));
    if (impl->mAvisSubscription == NULL)
       return MAMA_STATUS_PLATFORM;

    elvin_subscription_add_listener(impl->mAvisSubscription, avis_callback, impl);
    mama_log (MAMA_LOG_LEVEL_FINER,
              "Made Avis subscription to: %s", impl->mSubject);

    *subscriber =  (subscriptionBridge) impl;
    return MAMA_STATUS_OK;
}