void MamaEntitle::subscribeToSymbol (const char* symbol)
{
    static int howMany = 0;

    if (!mDisplayCallback)
    {
        mDisplayCallback = new DisplayCallback (this);
    }
    
    MamaSubscription* sub = NULL;
    sub = new MamaSubscription;
    
    sub->setRetries (3);
    sub->setRequiresInitial (mRequireInitial);
        
    if (mSnapshot)
    {
        sub->setSubscriptionType (MAMA_SUBSC_TYPE_NORMAL);
        sub->setServiceLevel (MAMA_SERVICE_LEVEL_SNAPSHOT, 0);
    }
    else if (mGroupSubscription)
    {
        sub->setSubscriptionType (MAMA_SUBSC_TYPE_GROUP);
        sub->setServiceLevel (MAMA_SERVICE_LEVEL_REAL_TIME, 0);
    }
    else
    {
        sub->setSubscriptionType (MAMA_SUBSC_TYPE_NORMAL);
        sub->setServiceLevel (MAMA_SERVICE_LEVEL_REAL_TIME, 0);
    }
    
    sub->create (
        mTransport,
        mQueueGroup->getNextQueue (),
        (DisplayCallback*)mDisplayCallback,
        mSource,
        symbol,
        NULL);
    
    mSubscriptionList.push_back (sub);

    if (++howMany % 1000 == 0)
    {
        printf ("Subscribed to %d subjects.\n", howMany);
    }
}
void MamaSymbolListSubscriber::createSymbolListSubscription ()
{
    MamaSubscription* sub       = NULL;
    const char* symbolListName  = "SYMBOL_LIST_NORMAL";

    sub = new MamaSubscription;
    mSymbolListSubscriptionCallback = new SymbolListSubscriptionCallback (this);

    sub->setSubscriptionType (MAMA_SUBSC_TYPE_SYMBOL_LIST);
    sub->create (mTransport,
                 mDefaultQueue,
                 (SymbolListSubscriptionCallback*)mSymbolListSubscriptionCallback,
                 mSourceName,
                 symbolListName,
                 NULL);
}