void MamdaCurrencyFields::setDictionary (const MamaDictionary& dictionary) { // already initialised if (initialised) { return; } //set the Common Fields if(!MamdaCommonFields::isSet()) { MamdaCommonFields::setDictionary (dictionary); } BID_PRICE = dictionary.getFieldByName ("wBidPrice"); ASK_PRICE = dictionary.getFieldByName ("wAskPrice"); theMaxFid = dictionary.getMaxFid(); initialised = true; }
void MamdaAuctionFields::setDictionary (const MamaDictionary& dictionary) { // Already initialised if (initialised) { return; } // Set the Common Fields if(!MamdaCommonFields::isSet ()) { MamdaCommonFields::setDictionary (dictionary); } UNCROSS_PRICE = dictionary.getFieldByName ("wUncrossPrice"); UNCROSS_VOLUME = dictionary.getFieldByName ("wUncrossVolume"); UNCROSS_PRICE_IND = dictionary.getFieldByName ("wUncrossPriceInd"); AUCTION_TIME = dictionary.getFieldByName ("wAuctionTime"); theMaxFid = dictionary.getMaxFid(); initialised = true; }
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) { try { CommonCommandLineParser cmdLine (argc, argv); setvbuf (stdout, (char *) NULL, _IONBF, 0); // Initialise the MAMA API mamaBridge bridge = cmdLine.getBridge(); Mama::open (); const vector<const char*>& symbolList = cmdLine.getSymbolList (); double throttleRate = cmdLine.getThrottleRate (); int snapshotInterval = cmdLine.getOptInt ("snapshot"); int precision = cmdLine.getPrecision (); bool processEntries = cmdLine.getOptBool ('e'); bool strictChecking = !cmdLine.getOptBool ('C'); bool processMarketOrders = cmdLine.getOptBool ('k'); bool showDeltas = cmdLine.showDeltas (); const char* dictFile = cmdLine.getOptString("use_dict_file"); MamaSource* source = cmdLine.getSource (); MamaQueueGroup queues (cmdLine.getNumThreads(), bridge); DictRequester dictRequester (bridge); // We might as well enforce strict checking of order book updates // (at the expense of some performance). if (strictChecking) { cout << "MamdaOrderBook strict checking is on" << endl; MamdaOrderBook::setStrictChecking (true); } else { cout << "MamdaOrderBook strict checking is off" << endl; MamdaOrderBook::setStrictChecking (false); } // Get and initialize the dictionary if(dictFile) { MamaDictionary* dict =new MamaDictionary; dict->populateFromFile(dictFile); MamdaCommonFields::setDictionary (*dict); MamdaOrderBookFields::setDictionary (*dict); } else { dictRequester.requestDictionary (cmdLine.getDictSource()); MamdaCommonFields::setDictionary (*dictRequester.getDictionary()); MamdaOrderBookFields::setDictionary (*dictRequester.getDictionary ()); } const char* symbolMapFile = cmdLine.getSymbolMapFile (); if (symbolMapFile) { MamaSymbolMapFile* aMap = new MamaSymbolMapFile; if (MAMA_STATUS_OK == aMap->load (symbolMapFile)) { source->getTransport()->setSymbolMap (aMap); } } for (vector<const char*>::const_iterator i = symbolList.begin (); i != symbolList.end (); ++i) { const char* symbol = *i; MamdaSubscription* aSubscription = new MamdaSubscription; MamdaOrderBookListener* aBookListener = new MamdaOrderBookListener; aSubscription->addMsgListener (aBookListener); aBookListener->setProcessMarketOrders (processMarketOrders); aBookListener->setProcessEntries (processEntries); BookTicker* aTicker = new BookTicker; aBookListener->addHandler (aTicker); aSubscription->addQualityListener (aTicker); aSubscription->addErrorListener (aTicker); aTicker->setShowEntries (processEntries); aTicker->setShowMarketOrders (processMarketOrders); aTicker->setShowDeltas (showDeltas); aTicker->setPrecision (precision); aSubscription->setType (MAMA_SUBSC_TYPE_BOOK); aSubscription->setMdDataType (MAMA_MD_DATA_TYPE_ORDER_BOOK); aSubscription->create (queues.getNextQueue(), source, symbol); } Mama::start (bridge); } catch (MamaStatus &e) { // This exception can be thrown from Mama.open () // Mama::createTransport (transportName) and from // MamdaSubscription constructor when entitlements is enabled. cerr << "MamaStatus exception in main (): " << e.toString () << endl; exit (1); } catch (std::exception &ex) { cerr << "Exception in main (): " << ex.what () << endl; exit (1); } catch (...) { cerr << "Unknown Exception in main ()." << endl; exit (1); } 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); }
int main (int argc, const char **argv) { setbuf (stdout, NULL); try { BookPublisher* mBookPublisher = new BookPublisher; CommonCommandLineParser cmdLine (argc, argv); // Initialise the MAMA API mamaBridge bridge = cmdLine.getBridge(); Mama::open (); const char* symbol = cmdLine.getOptString("s"); const char* partId = cmdLine.getOptString("p"); const char* pubSource = cmdLine.getOptString("SP"); const char* dictFile = cmdLine.getOptString("use_dict_file"); MamaSource* source = cmdLine.getSource(); mBookPublisher->mPublishRecaps = cmdLine.getPublishRecaps(); MamaQueueGroup queues (cmdLine.getNumThreads(), bridge); mBookPublisher->setQueueGroup (&queues);; mBookPublisher->setProcessEntries (cmdLine.getOptBool ('e')); mBookPublisher->createPublisherTransport (bridge); mBookPublisher->createPublisherManager (pubSource, bridge); // Get and initialize the dictionary if (dictFile) { MamaDictionary* dict =new MamaDictionary; dict->populateFromFile(dictFile); MamdaCommonFields::setDictionary (*dict); MamdaOrderBookFields::setDictionary (*dict); } else { DictRequester dictRequester (bridge); dictRequester.requestDictionary (cmdLine.getDictSource()); MamdaCommonFields::setDictionary (*dictRequester.getDictionary()); MamdaOrderBookFields::setDictionary (*dictRequester.getDictionary()); } //create publisher and also set up MamaTimer to process order and publish changes mBookPublisher->createTimer (symbol, bridge); mBookPublisher->createMessage (); //set up new Book and enable order book publishing mBookPublisher->createBook (symbol, partId); Mama::start (bridge); } catch (MamaStatus &e) { // This exception can be thrown from Mama.open () // Mama::createTransport (transportName) and from // MamdaSubscription constructor when entitlements is enabled. cerr << "MamaStatus exception in main (): " << e.toString () << endl; exit (1); } catch (std::exception &ex) { cerr << "Exception in main (): " << ex.what () << endl; exit (1); } catch (...) { cerr << "Unknown Exception in main ()." << endl; exit (1); } exit (1); }
void MamdaFundamentalFields::setDictionary (const MamaDictionary& dictionary) { // already initialised if (initialised) { return; } // Set the Common Fields if (!MamdaCommonFields::isSet()) { MamdaCommonFields::setDictionary (dictionary); } CORP_ACT_TYPE = dictionary.getFieldByName ("wCorpActType"); DIVIDEND_PRICE = dictionary.getFieldByName ("wDividend"); DIVIDEND_FREQ = dictionary.getFieldByName ("wDivFreq"); DIVIDEND_EX_DATE = dictionary.getFieldByName ("wDivExDate"); DIVIDEND_PAY_DATE = dictionary.getFieldByName ("wDivPayDate"); DIVIDEND_REC_DATE = dictionary.getFieldByName ("wDivRecordDate"); DIVIDEND_CURRENCY = dictionary.getFieldByName ("wDivCurrency"); SHARES_OUT = dictionary.getFieldByName ("wSharesOut"); SHARES_FLOAT = dictionary.getFieldByName ("wSharesFloat"); SHARES_AUTH = dictionary.getFieldByName ("wSharesAuth"); EARN_PER_SHARE = dictionary.getFieldByName ("wEarnPerShare"); VOLATILITY = dictionary.getFieldByName ("wVolatility"); PRICE_EARN_RATIO = dictionary.getFieldByName ("wPeRatio"); YIELD = dictionary.getFieldByName ("wYield"); MRKT_SEGM_NATIVE = dictionary.getFieldByName ("wMarketSegmentNative"); MRKT_SECT_NATIVE = dictionary.getFieldByName ("wMarketSectorNative"); MRKT_SEGMENT = dictionary.getFieldByName ("wMarketSegment"); MRKT_SECTOR = dictionary.getFieldByName ("wMarketSector"); RISK_FREE_RATE = dictionary.getFieldByName ("wRiskFreeRate"); HIST_VOLATILITY = dictionary.getFieldByName ("wHistVolatility"); theMaxFid = dictionary.getMaxFid(); initialised = true; }
void MamdaSecStatusFields::setDictionary (const MamaDictionary& dictionary) { // Already initialised if (initialised) { return; } // Set the Common Fields if (!MamdaCommonFields::isSet()) { MamdaCommonFields::setDictionary (dictionary); } PUB_CLASS = dictionary.getFieldByName ("wPubClass"); REASON = dictionary.getFieldByName ("wReason"); SECURITY_ACTION = dictionary.getFieldByName ("wSecurityAction"); SECURITY_TYPE = dictionary.getFieldByName ("wSecurityType"); SECURITY_STATUS = dictionary.getFieldByName ("wSecurityStatus"); SECURITY_STATUS_QUAL = dictionary.getFieldByName ("wSecStatusQual"); SECURITY_STATUS_NATIVE = dictionary.getFieldByName ("wSecurityStatusOrig"); SECURITY_STATUS_TIME = dictionary.getFieldByName ("wSecurityStatusTime"); EVENT_SEQ_NUM = dictionary.getFieldByName ("wSeqNum"); FREE_TEXT = dictionary.getFieldByName ("wText"); SHORT_SALE_CIRCUIT_BREAKER = dictionary.getFieldByName("wShortSaleCircuitBreaker"); LULDINDICATOR = dictionary.getFieldByName ("wLuldIndicator"); LULDTIME = dictionary.getFieldByName ("wLuldTime"); theMaxFid = dictionary.getMaxFid(); initialised = true; }