Beispiel #1
0
        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);
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
 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;
            }
            }
        }