Пример #1
0
  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);
    }
  }
Пример #2
0
  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;
    }
  }