Package com.opengamma.integration.analyticservice

Source Code of com.opengamma.integration.analyticservice.AnalyticServiceTradeProducer

/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.analyticservice;

import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;

import org.fudgemsg.FudgeContext;
import org.fudgemsg.FudgeMsg;
import org.fudgemsg.FudgeMsgEnvelope;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opengamma.core.position.Trade;
import com.opengamma.transport.FudgeMessageReceiver;
import com.opengamma.util.ArgumentChecker;

/**
*
*/
public class AnalyticServiceTradeProducer implements TradeProducer, FudgeMessageReceiver {
 
  private static final Logger s_logger = LoggerFactory.getLogger(AnalyticServiceTradeProducer.class);
 
  private final Set<TradeListener> _tradeListeners = new CopyOnWriteArraySet<TradeListener>();

  @Override
  public void messageReceived(FudgeContext fudgeContext, FudgeMsgEnvelope msgEnvelope) {
   
    FudgeMsg msg = msgEnvelope.getMessage();
    s_logger.debug("Message received {}", msg);
    Trade trade = fudgeContext.fromFudgeMsg(Trade.class, msg);
    notifyListeners(trade);
  }

  @Override
  public void addTradeListener(TradeListener tradeListener) {
    ArgumentChecker.notNull(tradeListener, "trade listener");
    _tradeListeners.add(tradeListener);
  }

  @Override
  public void removeTradeListener(TradeListener tradeListener) {
    ArgumentChecker.notNull(tradeListener, "trade listener");
    _tradeListeners.remove(tradeListener);
  }
 
  private void notifyListeners(Trade trade) {
    for (TradeListener listener : _tradeListeners) {
      listener.tradeReceived(trade);
    }
  }

}
TOP

Related Classes of com.opengamma.integration.analyticservice.AnalyticServiceTradeProducer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.