コード例 #1
0
ファイル: mamaproxyc.c プロジェクト: OpenMAMA/OpenMAMA
static void MAMACALLTYPE
subscriptionHandlerOnRequestCb (mamaDQPublisherManager manager,
                                mamaPublishTopic*      publishTopicInfo,
                                short                  subType,
                                short                  msgType,
                                mamaMsg                msg)
{

    recapInfo* info = NULL;
    pubCache*  cache = NULL;
    mamaQueue  queue;

    printf ("Received request: %s\n", publishTopicInfo->symbol);

    switch (msgType)
    {
        case MAMA_SUBSC_SUBSCRIBE:
        case MAMA_SUBSC_SNAPSHOT:
            mamaMsg_detach (msg);
            info = (recapInfo*) calloc (1, sizeof(recapInfo));
            cache = publishTopicInfo->cache;
            info->index = cache->index;
            info->msg = msg;
            mamaSubscription_getQueue(cache->sub, &queue);
            mamaQueue_enqueueEvent  (queue,
                             sendRecap,
                             info);
            break;
        case MAMA_SUBSC_DQ_SUBSCRIBER :
        case MAMA_SUBSC_DQ_PUBLISHER:
        case MAMA_SUBSC_DQ_NETWORK:
        case MAMA_SUBSC_DQ_UNKNOWN:
        case MAMA_SUBSC_DQ_GROUP_SUBSCRIBER:
            info = (recapInfo*) calloc (1, sizeof(recapInfo));
            cache = publishTopicInfo->cache;
            info->index = cache->index;
            mamaSubscription_getQueue(cache->sub, &queue);
            mamaQueue_enqueueEvent  (queue,
                             sendRecap,
                             info);
            break;

        case MAMA_SUBSC_UNSUBSCRIBE:
        case MAMA_SUBSC_RESUBSCRIBE:
        case MAMA_SUBSC_REFRESH:
        default:
            break;
    }
}
コード例 #2
0
ファイル: mamaproxyc.c プロジェクト: varauder/OpenMAMA
static void MAMACALLTYPE
subscriptionHandlerOnNewRequestCb (mamaDQPublisherManager manager,
                                   const char*            symbol,
                                   short                  subType,
                                   short                  msgType,
                                   mamaMsg                msg)
{
    int i = 0;
    mamaQueue queue;
    recapInfo*  info = NULL;

    for (i=0; i < gNumSymbols; i++)
    {
        if (strcmp (gSubscriptionList[i].symbol, symbol) == 0)
            break;
    }

    if (i == gNumSymbols)
    {
        printf ("Received request for unknown symbol: %s\n", symbol);

        return;
    }

    mamaDQPublisherManager_createPublisher (manager, symbol, (void*)i, &gSubscriptionList[i].pub);

    printf ("Received new request: %s\n", symbol);


    info = (recapInfo*) calloc (1, sizeof(recapInfo));
    info->index =i;
    mamaSubscription_getQueue(gSubscriptionList[i].sub, &queue);
    switch (msgType)
    {
    case MAMA_SUBSC_SUBSCRIBE:
    case MAMA_SUBSC_SNAPSHOT:
        mamaMsg_detach (msg);

        info->msg = msg;
        mamaQueue_enqueueEvent  (queue,
                                 sendRecap,
                                 info);
        break;
    default:
        mamaQueue_enqueueEvent  (queue,
                                 sendRecap,
                                 info);
        break;
    }

}