void IMessageChannel.SendInMessage(Message message) { switch (message.Type) { case MessageTypes.Connect: { if (_isFirstTimeConnect) { _isFirstTimeConnect = false; } else { _adapter.SendInMessage(new ResetMessage()); } // lock (_timeSync) // { // _currState = ConnectionStates.Connecting; // } // if (_prevState == _none) // { // _connectionTimeOut = _reConnectionSettings.TimeOutInterval; // _connectingAttemptCount = _reConnectionSettings.AttemptCount; // } // else // _connectionTimeOut = _reConnectionSettings.Interval; break; } case MessageTypes.Disconnect: { //lock (_timeSync) // _currState = ConnectionStates.Disconnecting; //_connectionTimeOut = _reConnectionSettings.TimeOutInterval; lock (_timeSync) { _canSendTime = false; if (_heartBeatTimer != null) { _heartBeatTimer.Dispose(); _heartBeatTimer = null; } } break; } } _adapter.SendInMessage(message); }
/// <summary> /// The embedded adapter event <see cref="IMessageChannel.NewOutMessage"/> handler. /// </summary> /// <param name="innerAdapter">The embedded adapter.</param> /// <param name="message">Message.</param> protected virtual void OnInnerAdapterNewMessage(IMessageAdapter innerAdapter, Message message) { if (message.IsBack) { message.IsBack = false; innerAdapter.SendInMessage(message); return; } message.Adapter = innerAdapter; switch (message.Type) { case MessageTypes.Connect: ProcessConnectMessage(innerAdapter, (ConnectMessage)message); return; case MessageTypes.Disconnect: ProcessDisconnectMessage(innerAdapter, (DisconnectMessage)message); return; case MessageTypes.MarketData: ProcessMarketDataMessage(innerAdapter, (MarketDataMessage)message); return; } SendOutMessage(message); }
void IMessageChannel.SendInMessage(Message message) { if (message.LocalTime.IsDefault()) { message.LocalTime = _innerAdapter.CurrentTime.LocalDateTime; } if (message.Type == MessageTypes.Connect) { LatencyManager.Reset(); CommissionManager.Reset(); RiskManager.Reset(); } else { LatencyManager.ProcessMessage(message); ProcessRisk(message); } _innerAdapter.SendInMessage(message); }
private void SetSubscribed(IMessageAdapter adapter, SubscriptionInfo key) { _subscriptions.Add(key, adapter); _subscriptionStates[key] = SubscriptionStates.Subscribed; var messages = _suspendedSubscriptions.TryGetValue(key)?.CopyAndClear(); if (messages == null) { return; } foreach (var mdMsg in messages) { adapter.SendInMessage(mdMsg); } }
private void InputChannelOnNewOutMessage(Message message) { _adapter.SendInMessage(message); }
private void SendToEmulator(Message message) { _inAdapter.SendInMessage(message); }
private void SendToEmulator(Message message) { _channelEmulator.SendInMessage(message); }
/// <summary> /// Send message. /// </summary> /// <param name="message">Message.</param> public virtual void SendInMessage(Message message) { InnerAdapter.SendInMessage(message); }
/// <summary> /// Отправить сообщение. /// </summary> /// <param name="message">Сообщение.</param> public virtual void SendInMessage(Message message) { switch (message.Type) { case MessageTypes.Security: case MessageTypes.SecurityLookup: case MessageTypes.News: case MessageTypes.MarketData: { if (_marketDataAdapter != null) { _marketDataAdapter.SendInMessage(message); } break; } case MessageTypes.OrderRegister: case MessageTypes.OrderReplace: case MessageTypes.OrderPairReplace: case MessageTypes.OrderCancel: case MessageTypes.OrderGroupCancel: case MessageTypes.Portfolio: case MessageTypes.Position: case MessageTypes.PortfolioLookup: case MessageTypes.OrderStatus: { if (_transactionAdapter != null) { _transactionAdapter.SendInMessage(message); } break; } case MessageTypes.Time: case MessageTypes.Connect: { if (IsTransactionEnabled) { _transactionAdapter = CreateTransactionAdapter(); _transactionAdapter.NewOutMessage += TransactionAdapterOnNewOutMessage; _transactionAdapter.SendInMessage(message); } if (IsMarketDataEnabled) { _marketDataAdapter = CreateMarketDataAdapter(); _marketDataAdapter.NewOutMessage += MarketDataAdapterOnNewOutMessage; _marketDataAdapter.SendInMessage(message); } break; } case MessageTypes.Disconnect: case MessageTypes.ChangePassword: case MessageTypes.ClearMessageQueue: { if (_marketDataAdapter != null) { _marketDataAdapter.SendInMessage(message); } if (_transactionAdapter != null) { _transactionAdapter.SendInMessage(message); } break; } } }