001 package org.otfeed.protocol.request;
002
003 import org.otfeed.IConnection;
004 import org.otfeed.IRequest;
005 import org.otfeed.command.SnapshotCommand;
006 import org.otfeed.command.TickStreamCommand;
007 import org.otfeed.command.VolumeStyleEnum;
008 import org.otfeed.event.ICompletionDelegate;
009 import org.otfeed.event.IDataDelegate;
010 import org.otfeed.event.OTBBO;
011 import org.otfeed.event.OTMMQuote;
012 import org.otfeed.event.OTQuote;
013 import org.otfeed.event.OTTrade;
014
015 /**
016 * Synthetic request: issues {@link SnapshotRequest}, followed by {@link TickStreamExRequest}.
017 */
018 public class TickStreamWithSnapshotRequest extends AbstractStreamWithSnapshotRequest implements IRequest {
019
020 private final SnapshotCommand snapshotCommand;
021 private final TickStreamCommand streamCommand;
022
023 public TickStreamWithSnapshotRequest(IConnection connection,
024 String exchangeCode,
025 String symbolCode,
026 VolumeStyleEnum volumeStyle,
027 IDataDelegate<OTQuote> quoteDelegate,
028 IDataDelegate<OTTrade> tradeDelegate,
029 IDataDelegate<OTMMQuote> mmQuoteDelegate,
030 IDataDelegate<OTBBO> bboDelegate,
031 ICompletionDelegate completionDelegate
032 ) {
033 super(connection, completionDelegate);
034
035 snapshotCommand = new SnapshotCommand(exchangeCode, symbolCode, volumeStyle);
036 snapshotCommand.setQuoteDelegate(quoteDelegate);
037 snapshotCommand.setTradeDelegate(tradeDelegate);
038 snapshotCommand.setMmQuoteDelegate(mmQuoteDelegate);
039 snapshotCommand.setBboDelegate(bboDelegate);
040
041 streamCommand = new TickStreamCommand(exchangeCode, symbolCode, volumeStyle);
042 streamCommand.setQuoteDelegate(quoteDelegate);
043 streamCommand.setTradeDelegate(tradeDelegate);
044 streamCommand.setMmQuoteDelegate(mmQuoteDelegate);
045 streamCommand.setBboDelegate(bboDelegate);
046 }
047
048 @Override
049 IRequest prepareSnapshotRequest(IConnection connection, ICompletionDelegate d) {
050 snapshotCommand.setCompletionDelegate(d);
051 return connection.prepareRequest(snapshotCommand);
052 }
053
054 @Override
055 IRequest prepareStreamRequest(IConnection connection, ICompletionDelegate d) {
056 streamCommand.setCompletionDelegate(d);
057 return connection.prepareRequest(streamCommand);
058 }
059 }