public static void main(final String[] args) { MamaTransport transport = null; MamaTransport mDictTransport = null; MamaDictionary dictionary = null; CommandLineProcessor options = new CommandLineProcessor(args); Level level = options.getLogLevel(); if (level != null) { theLogger.setLevel(level); Mama.enableLogging(level); } theLogger.info("Source: " + options.getSource()); try { // Initialize MAMDA mBridge = options.getBridge(); Mama.open(); transport = new MamaTransport(); transport.create(options.getTransport(), mBridge); mDictTransportName = options.getDictTransport(); if (mDictTransportName != null) { mDictTransport = new MamaTransport(); mDictTransport.create(mDictTransportName, mBridge); } else { mDictTransport = transport; } // Get the Data dictionary..... dictionary = buildDataDictionary(mDictTransport, options.getDictSource()); MamdaFundamentalFields.setDictionary(dictionary, null); MamdaCommonFields.setDictionary(dictionary, null); for (Iterator iterator = options.getSymbolList().iterator(); iterator.hasNext(); ) { final String symbol = (String) iterator.next(); MamdaSubscription aSubscription = new MamdaSubscription(); MamdaFundamentalListener aFundamentalListener = new MamdaFundamentalListener(); FundamentalTicker aTicker = new FundamentalTicker(); aFundamentalListener.addHandler(aTicker); aSubscription.addMsgListener(aFundamentalListener); aSubscription.addStaleListener(aTicker); aSubscription.addErrorListener(aTicker); aSubscription.create( transport, Mama.getDefaultQueue(mBridge), options.getSource(), symbol, null); theLogger.fine("Subscribed to: " + symbol); } Mama.start(mBridge); Thread.currentThread().join(); } catch (Exception e) { e.printStackTrace(); System.exit(1); } }
private static MamaDictionary buildDataDictionary(MamaTransport transport, String dictSource) throws InterruptedException { final boolean gotDict[] = {false}; MamaDictionaryCallback dictionaryCallback = new MamaDictionaryCallback() { public void onTimeout() { System.err.println("Timed out waiting for dictionary"); System.exit(1); } public void onError(final String s) { System.err.println("Error getting dictionary: " + s); System.exit(1); } public synchronized void onComplete() { gotDict[0] = true; Mama.stop(mBridge); notifyAll(); } }; synchronized (dictionaryCallback) { MamaSubscription subscription = new MamaSubscription(); MamaSource mDictSource = new MamaSource(); mDictSource.setTransport(transport); mDictSource.setSymbolNamespace(dictSource); MamaDictionary dictionary = subscription.createDictionarySubscription( dictionaryCallback, Mama.getDefaultQueue(mBridge), mDictSource); Mama.start(mBridge); if (!gotDict[0]) dictionaryCallback.wait(30000); if (!gotDict[0]) { System.err.println("Timed out waiting for dictionary."); System.exit(0); } return dictionary; } }