/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.transport;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
import org.fudgemsg.FudgeContext;
import org.fudgemsg.FudgeMsgEnvelope;
/**
* Collects all Fudge message envelopes in an array for later analysis.
*
* @author kirk
*/
public class CollectingFudgeMessageReceiver implements FudgeMessageReceiver {
private final BlockingQueue<FudgeMsgEnvelope> _messages = new LinkedBlockingQueue<FudgeMsgEnvelope>();
@Override
public void messageReceived(FudgeContext fudgeContext, FudgeMsgEnvelope msgEnvelope) {
_messages.add(msgEnvelope);
}
public List<FudgeMsgEnvelope> getMessages() {
return new LinkedList<FudgeMsgEnvelope>(_messages);
}
public void clear() {
_messages.clear();
}
public FudgeMsgEnvelope waitForMessage(final long timeoutMillis) {
try {
return _messages.poll(timeoutMillis, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
return null;
}
}
}