Пример #1
0
        /// <summary>
        /// Отправить сообщение.
        /// </summary>
        /// <param name="message">Сообщение.</param>
        protected override void OnSendInMessage(Message message)
        {
            switch (message.Type)
            {
            case MessageTypes.Reset:
            {
                if (_api != null)
                {
                    try
                    {
                        if (_api.IsConnected)
                        {
                            _api.Disconnect();
                        }
                    }
                    catch (Exception ex)
                    {
                        SendOutError(ex);
                    }

                    try
                    {
                        _api.Dispose();
                    }
                    catch (Exception ex)
                    {
                        SendOutError(ex);
                    }

                    _api = null;
                }

                SendOutMessage(new ResetMessage());

                break;
            }

            case MessageTypes.Connect:
            {
                var terminal = GetTerminal();

                if (!terminal.IsLaunched)
                {
                    terminal.AssignProcess();
                }

                Api.Connect(terminal.DirectoryName);

                break;
            }

            case MessageTypes.Disconnect:
                Api.Disconnect();
                break;

            case MessageTypes.OrderRegister:
                var regMsg = (OrderRegisterMessage)message;
                RegisterTransaction(regMsg.CreateRegisterTransaction(regMsg.GetValue <string>(PositionChangeTypes.DepoName), SecurityClassInfo, SingleSlash));
                break;

            case MessageTypes.OrderReplace:
                RegisterTransaction(((OrderReplaceMessage)message).CreateMoveTransaction(SecurityClassInfo));
                break;

            case MessageTypes.OrderCancel:
                RegisterTransaction(((OrderCancelMessage)message).CreateCancelTransaction(SecurityClassInfo));
                break;

            case MessageTypes.OrderGroupCancel:
                RegisterTransaction(((OrderGroupCancelMessage)message).CreateCancelFuturesTransaction(SecurityClassInfo));
                break;
            }
        }