package org.marketcetera.quickfix; import org.marketcetera.util.log.SLF4JLoggerProxy; import quickfix.FieldNotFound; import quickfix.Message; import quickfix.SessionID; import quickfix.SessionNotFound; import quickfix.field.Side; import java.util.LinkedList; import java.util.concurrent.Semaphore; /** * Dummy implementation of a QuickfixSender that captures all the messages * but doesn't actually send them anywhere. * If there's a semaphore, signals on it that the element is available. * @author toli * @version $Id: NullQuickFIXSender.java 16841 2014-02-20 19:59:04Z colin $ */ public class NullQuickFIXSender implements QuickFIXSender { LinkedList<Message> capturedMessages = new LinkedList<Message>(); private Semaphore sema; public boolean sendToTarget(Message message) throws SessionNotFound { return sendHelper(message); } public boolean sendToTarget(Message message, SessionID sessionID) throws SessionNotFound { return sendHelper(message); } public boolean sendToTarget(Message message, String qualifier) throws SessionNotFound { return sendHelper(message); } public boolean sendToTarget(Message message, String senderCompID, String targetCompID) throws SessionNotFound { return sendHelper(message); } public boolean sendToTarget(Message message, String senderCompID, String targetCompID, String qualifier) throws SessionNotFound { return sendHelper(message); } public LinkedList<Message> getCapturedMessages() { return capturedMessages; } public void setSemaphore(Semaphore inSema) { sema = inSema; } private boolean sendHelper(Message message) { capturedMessages.add(message); if(sema != null) { sema.release(); if (SLF4JLoggerProxy.isDebugEnabled(this)) { String humanSide = null; try { humanSide = CurrentFIXDataDictionary.getCurrentFIXDataDictionary().getHumanFieldValue(Side.FIELD, ""+message.getChar(Side.FIELD)); //$NON-NLS-1$ } catch (FieldNotFound fieldNotFound) { //ignore } SLF4JLoggerProxy.debug(this, "qfSender released sema {} for side {}", sema.getQueueLength(), humanSide); //$NON-NLS-1$ } } return false; } }