/// <summary> /// Initialize <see cref="EmulationMessageAdapter"/>. /// </summary> /// <param name="innerAdapter">Underlying adapter.</param> /// <param name="inputChannel">Incoming messages channel.</param> /// <param name="outputChannel">Outgoing message channel.</param> public EmulationMessageAdapter(IMessageAdapter innerAdapter, IMessageChannel inputChannel, IMessageChannel outputChannel) : base(innerAdapter) { Emulator = new MarketEmulator { Parent = this, //SendBackSecurities = true, Settings = { ConvertTime = true, InitialOrderId = DateTime.Now.Ticks, InitialTradeId = DateTime.Now.Ticks, } }; _inputChannel = inputChannel; _outputChannel = outputChannel; _channelEmulator = new ChannelMessageAdapter(new SubscriptionOnlineMessageAdapter(Emulator), inputChannel, outputChannel); _channelEmulator.NewOutMessage += OnMarketEmulatorNewOutMessage; }
/// <summary> /// Initialize <see cref="EmulationMessageAdapter"/>. /// </summary> /// <param name="innerAdapter">Underlying adapter.</param> /// <param name="inChannel">Incoming messages channel.</param> /// <param name="isEmulationOnly">Send <see cref="TimeMessage"/> to emulator.</param> /// <param name="securityProvider">The provider of information about instruments.</param> /// <param name="portfolioProvider">The portfolio to be used to register orders. If value is not given, the portfolio with default name Simulator will be created.</param> /// <param name="exchangeInfoProvider">Exchanges and trading boards provider.</param> public EmulationMessageAdapter(IMessageAdapter innerAdapter, IMessageChannel inChannel, bool isEmulationOnly, ISecurityProvider securityProvider, IPortfolioProvider portfolioProvider, IExchangeInfoProvider exchangeInfoProvider) : base(innerAdapter) { Emulator = new MarketEmulator(securityProvider, portfolioProvider, exchangeInfoProvider, TransactionIdGenerator) { Parent = this, Settings = { ConvertTime = true, InitialOrderId = DateTime.Now.Ticks, InitialTradeId = DateTime.Now.Ticks, } }; InChannel = inChannel; _inAdapter = new SubscriptionOnlineMessageAdapter(Emulator); _inAdapter = new ChannelMessageAdapter(_inAdapter, inChannel, new PassThroughMessageChannel()); _inAdapter.NewOutMessage += RaiseNewOutMessage; _isEmulationOnly = isEmulationOnly; }
/// <summary> /// Initialize <see cref="EmulationMessageAdapter"/>. /// </summary> /// <param name="innerAdapter">Underlying adapter.</param> /// <param name="queue">Message queue.</param> /// <param name="isEmulationOnly">Send <see cref="TimeMessage"/> to emulator.</param> public EmulationMessageAdapter(IMessageAdapter innerAdapter, IMessageQueue queue, bool isEmulationOnly) : base(innerAdapter) { Emulator = new MarketEmulator { Parent = this, //SendBackSecurities = true, Settings = { ConvertTime = true, InitialOrderId = DateTime.Now.Ticks, InitialTradeId = DateTime.Now.Ticks, } }; _channelEmulator = new ChannelMessageAdapter(new SubscriptionOnlineMessageAdapter(Emulator), new InMemoryMessageChannel(queue, "Emulator in", err => RaiseNewOutMessage(new ErrorMessage { Error = err })), new PassThroughMessageChannel()); _channelEmulator.NewOutMessage += OnMarketEmulatorNewOutMessage; _queue = queue; _isEmulationOnly = isEmulationOnly; }