/* Description: Create a mamaPublisher and get its transport * * Expected Result: MAMA_STATUS_OK */ TEST_F (MamaPublisherTestC, GetTransport) { mamaPublisher publisher = NULL; mamaTransport tport = NULL; const char* symbol = "SYM"; const char* source = "SRC"; ASSERT_EQ (MAMA_STATUS_OK, mamaTransport_allocate (&tport)); ASSERT_EQ (MAMA_STATUS_OK, mamaTransport_create (tport, getTransport(), mBridge)); ASSERT_EQ (MAMA_STATUS_OK, mamaPublisher_create (&publisher, tport, symbol, source, NULL)); ASSERT_EQ(tport, mamaPublisherImpl_getTransportImpl (publisher)); ASSERT_EQ(tport, mamaPublisherImpl_getTransportImpl (publisher)); ASSERT_EQ (MAMA_STATUS_OK, mamaPublisher_destroy (publisher)); ASSERT_EQ (MAMA_STATUS_OK, mamaTransport_destroy (tport)); ASSERT_EQ (0, pubOnCreateCount); ASSERT_EQ (0, pubOnErrorCount); ASSERT_EQ (0, pubOnDestroyCount); }
/* Description: Create a mamaPublisher then destroy it. * * Expected Result: MAMA_STATUS_OK */ TEST_F (MamaPublisherTestC, CreateDestroy) { mamaPublisher publisher = NULL; mamaTransport tport = NULL; const char* source = getSource(); pubOnCreateCount = 0; pubOnErrorCount = 0; pubOnDestroyCount = 0; ASSERT_EQ (MAMA_STATUS_OK, mamaTransport_allocate (&tport)); ASSERT_EQ (MAMA_STATUS_OK, mamaTransport_create (tport, getTransport(), mBridge)); ASSERT_EQ (MAMA_STATUS_OK, mamaPublisher_create (&publisher, tport, source, NULL, NULL)); ASSERT_EQ (MAMA_STATUS_OK, mamaPublisher_destroy (publisher)); ASSERT_EQ (MAMA_STATUS_OK, mamaTransport_destroy (tport)); }
mama_status mamaDQPublisherManager_create ( mamaDQPublisherManager manager, mamaTransport transport, mamaQueue queue, const mamaDQPublisherManagerCallbacks* callback, const char* sourcename, const char* root, void * closure) { char* topic; int length = 0; mamaDQPublisherManagerImpl* impl = (mamaDQPublisherManagerImpl*) manager; static mamaMsgCallbacks basicSubscCbs = { dqPublisherImplCreateCb, dqPublisherImplErrorCb, dqPublisherImplMsgCb, NULL }; impl->mUserCallbacks = *callback; impl->mTransport = transport; impl->mQueue = queue; impl->mClosure = closure; length = strlen(root) + 1 + (strlen(sourcename) + 1); topic = calloc(length, sizeof(char)); strcpy(topic, root); impl->mNameSpace = strdup(sourcename); strcat(topic, "."); strcat(topic, sourcename); impl->mPublisherMap = wtable_create (topic, NUM_BUCKETS); mamaSubscription_allocate (&impl->mSubscription); mamaPublisher_create (&impl->mPublisher, transport, MAMA_CM_TOPIC, NULL, NULL); mamaSubscription_createBasic (impl->mSubscription, transport, queue, &basicSubscCbs, topic, impl); free(topic); return MAMA_STATUS_OK; }
void MamaPublisherImpl::create (MamaTransport *transport, const char *topic, const char *source, const char *root) { if (mPublisher) { throw MamaStatus (MAMA_STATUS_INVALID_ARG); } mamaTry (mamaPublisher_create (&mPublisher, transport->getCValue(), topic, source, root)); }
/* Description: Create a mamaPublisher and mamaMsg, send the msg using * mamaPublisher then destroy both. * * Expected Result: MAMA_STATUS_OK */ TEST_F (MamaPublisherTestC, Send) { mamaPublisher publisher = NULL; mamaTransport tport = NULL; const char* symbol = getSymbol(); const char* source = getSource(); mamaMsg msg = NULL; pubOnCreateCount = 0; pubOnErrorCount = 0; pubOnDestroyCount = 0; ASSERT_EQ (MAMA_STATUS_OK, mama_open()); ASSERT_EQ (MAMA_STATUS_OK, mamaMsg_create (&msg)); ASSERT_EQ (MAMA_STATUS_OK, mamaMsg_addString (msg, symbol, 101, source)); ASSERT_EQ (MAMA_STATUS_OK, mamaTransport_allocate (&tport)); ASSERT_EQ (MAMA_STATUS_OK, mamaTransport_create (tport, getTransport(), mBridge)); ASSERT_EQ (MAMA_STATUS_OK, mamaPublisher_create (&publisher, tport, symbol, source, NULL)); ASSERT_EQ (MAMA_STATUS_OK, mamaPublisher_send (publisher, msg)); ASSERT_EQ (MAMA_STATUS_OK, mamaPublisher_destroy (publisher)); ASSERT_EQ (MAMA_STATUS_OK, mamaTransport_destroy (tport)); ASSERT_EQ (MAMA_STATUS_OK, mama_close()); ASSERT_EQ (0, pubOnCreateCount); ASSERT_EQ (0, pubOnErrorCount); ASSERT_EQ (0, pubOnDestroyCount); }
static void prepareDictionaryListener (void) { mama_status status = MAMA_STATUS_OK; mamaMsgCallbacks dictionarySubCallbacks; dictionarySubCallbacks.onCreate = dictionarySubOnCreate; dictionarySubCallbacks.onDestroy = dictionarySubOnDestroy; dictionarySubCallbacks.onError = dictionarySubOnError; dictionarySubCallbacks.onMsg = dictionarySubOnMsg; /* Basic subscription so these are set to NULL */ dictionarySubCallbacks.onQuality = NULL; dictionarySubCallbacks.onGap = NULL; dictionarySubCallbacks.onRecapRequest = NULL; status = mamaSubscription_allocate (&gDictionarySubscription); if (MAMA_STATUS_OK != status) { mama_log (MAMA_LOG_LEVEL_ERROR, "Could not allocate dictionary subscription."); exit (1); } status = mamaSubscription_createBasic (gDictionarySubscription, gPubTransport, gPubDefaultQueue, &dictionarySubCallbacks, "_MDDD.WOMBAT.DATA_DICT", NULL); if (status != MAMA_STATUS_OK) { mama_log (MAMA_LOG_LEVEL_ERROR, "Could not create dictionary subscription"); exit (1); } /* Create the Dictionary Object */ mamaDictionary_create (&gDictionary); mamaDictionary_populateFromFile (gDictionary, gDictionaryFile); /* Create Dictionary Response Message */ status = mamaDictionary_getDictionaryMessage (gDictionary, &gDictionaryMessage); if (MAMA_STATUS_OK != status) { mama_log (MAMA_LOG_LEVEL_ERROR, "Failed to allocate dictionary message."); exit (1); } /* Build dictionary publisher */ status = mamaPublisher_create (&gDictionaryPublisher, gPubTransport, "WOMBAT.DATA_DICT", NULL, NULL); if (MAMA_STATUS_OK != status) { mama_log (MAMA_LOG_LEVEL_ERROR, "Failed to create dictionary publisher."); exit (1); } status = mamaMsg_updateU8 (gDictionaryMessage, MamaFieldMsgType.mName, MamaFieldMsgType.mFid, MAMA_MSG_TYPE_INITIAL); if (MAMA_STATUS_OK != status) { mama_log (MAMA_LOG_LEVEL_ERROR, "Failed to update dictionary message."); exit (1); } }