void MamaEntitle::buildDataDictionary () { DictionaryCallback cb (this, mBridgeImpl); mDictionary = new MamaDictionary; mDictionary->create (mDefaultQueue, &cb, mDictSource, 3, 10.0); Mama::start (mBridgeImpl); if (mDictionaryComplete == false) { cerr << "Failed to create dictionary. Exiting." << endl; exit (1); } }
int main(int argc, const char** argv) { //MamaQueue* mDefaultQueue = NULL; const char* symbol = ""; const char* source = ""; const char* middleware = ""; const char* transportname = ""; const char* output_filename = ""; const char* symbol_filename = ""; GzFileHandler* gzfh = NULL; set<string> all_symbols; int i = 1; for (i = 1; i < argc;) { if (strcmp (argv[i], "-S") == 0) { source = argv[i + 1]; i += 2; } else if (strcmp (argv[i], "-tport") == 0) { transportname = argv[i + 1]; i += 2; } else if (strcmp (argv[i], "-f") == 0) { char sbuf[128]; symbol_filename = argv[i + 1]; i += 2; FILE *sfile = fopen(symbol_filename, "r"); while(fgets(sbuf, 128, sfile) != NULL) { char* nl_find = strchr(sbuf, '\n'); if(nl_find != NULL) *nl_find = '\0'; string str = sbuf; all_symbols.insert(sbuf); } } else if (strcmp (argv[i], "-s") == 0) { symbol = argv[i + 1]; i += 2; all_symbols.insert(symbol); } else if (strcmp (argv[i], "-m") == 0) { middleware = argv[i + 1]; i += 2; } else if (strcmp (argv[i], "-o") == 0) { output_filename = argv[i + 1]; i += 2; } } gzfh = new GzFileHandler(output_filename, GZ_FILE_HANDLER_WRITE); t_rmsc = new RecordingMamaSubscriptionCallback(gzfh); int number_threads = 1; // Load all required bridges at this point mBridgeImpl = Mama::loadBridge (middleware); // Open up the MAMA api Mama::open (); Mama::enableLogging (MAMA_LOG_LEVEL_NORMAL, stderr); MamaQueue* mDefaultQueue = Mama::getDefaultEventQueue (mBridgeImpl); transport = new MamaTransport; transport->create(transportname, mBridgeImpl); set<string>::iterator it; MamaSource* mDictSource = new MamaSource ("WOMBAT", transport, "WOMBAT"); DictionaryCallback cb (mBridgeImpl); MamaDictionary* mDictionary = new MamaDictionary; mDictionary->create (mDefaultQueue, &cb, mDictSource, 3, 10); Mama::start (mBridgeImpl); printf("Writing Dictionary...\n"); mDictionary->writeToFile("/home/frank/wush/fquinn/openmamacapture/data.dict"); mQueueGroup = new MamaQueueGroup (number_threads, mBridgeImpl); for(it = all_symbols.begin(); it != all_symbols.end(); it++) { printf("Setting up MAMA Subscription for %s\n", (*it).c_str()); MamaSubscription* sub = new MamaSubscription; mVectorMamaSubscription.push_back(sub); sub->create (transport, mQueueGroup->getNextQueue (), (RecordingMamaSubscriptionCallback*)t_rmsc, source, (*it).c_str(), NULL); } signal(SIGINT, cleanup); printf("Starting...\n"); Mama::start(mBridgeImpl); }