Exemplo n.º 1
0
        private void OnDisconnected(Exception error)
        {
            DisposeWrapper();

            SendOutMessage(new DisconnectMessage {
                Error = error
            });

            _wrapper = null;
        }
		/// <summary>
		/// Отправить сообщение.
		/// </summary>
		/// <param name="message">Сообщение.</param>
		protected override void OnSendInMessage(Message message)
		{
			switch (message.Type)
			{
				case MessageTypes.Reset:
				{
					_tempDepths.Clear();
					_candleTransactions.Clear();
					_bestQuotes.Clear();

					_lookupSecuritiesId = 0;
					_lookupPortfoliosId = 0;

					//_smartOrderIds.Clear();
					//_smartIdOrders.Clear();

					if (_wrapper != null)
					{
						try
						{
							DisposeWrapper();
						}
						catch (Exception ex)
						{
							SendOutError(ex);
						}

						try
						{
							_wrapper.Disconnect();
						}
						catch (Exception ex)
						{
							SendOutError(ex);
						}

						_wrapper = null;
					}

					SendOutMessage(new ResetMessage());

					break;
				}

				case MessageTypes.Connect:
				{
					if (_wrapper != null)
						throw new InvalidOperationException(LocalizedStrings.Str1619);

					switch (Version)
					{
						case SmartComVersions.V2:
							_wrapper = new SmartCom2Wrapper();
							break;
						case SmartComVersions.V3:
							_wrapper = (Environment.Is64BitProcess
								? (ISmartComWrapper)new SmartCom3Wrapper64
								{
									ClientSettings = ClientSettings,
									ServerSettings = ServerSettings,
								}
								: new SmartCom3Wrapper32
								{
									ClientSettings = ClientSettings,
									ServerSettings = ServerSettings,
								});

							break;
						default:
							throw new ArgumentOutOfRangeException();
					}

					_wrapper.NewPortfolio += OnNewPortfolio;
					_wrapper.PortfolioChanged += OnPortfolioChanged;
					_wrapper.PositionChanged += OnPositionChanged;
					_wrapper.NewMyTrade += OnNewMyTrade;
					_wrapper.NewOrder += OnNewOrder;
					_wrapper.OrderFailed += OnOrderFailed;
					_wrapper.OrderCancelFailed += OnOrderCancelFailed;
					_wrapper.OrderChanged += OnOrderChanged;
					_wrapper.OrderReRegisterFailed += OnOrderReRegisterFailed;
					_wrapper.OrderReRegistered += OnOrderReRegistered;

					_wrapper.NewSecurity += OnNewSecurity;
					_wrapper.SecurityChanged += OnSecurityChanged;
					_wrapper.QuoteChanged += OnQuoteChanged;
					_wrapper.NewTrade += OnNewTrade;
					_wrapper.NewHistoryTrade += OnNewHistoryTrade;
					_wrapper.NewBar += OnNewBar;

					_wrapper.Connected += OnConnected;
					_wrapper.Disconnected += OnDisconnected;

					_wrapper.Connect(Address.GetHost(), (short)Address.GetPort(), Login, Password.To<string>());

					break;
				}

				case MessageTypes.Disconnect:
				{
					if (_wrapper == null)
						throw new InvalidOperationException(LocalizedStrings.Str1856);

					_wrapper.Disconnect();

					break;
				}

				case MessageTypes.OrderRegister:
					ProcessRegisterMessage((OrderRegisterMessage)message);
					break;

				case MessageTypes.OrderCancel:
					ProcessCancelMessage((OrderCancelMessage)message);
					break;

				case MessageTypes.OrderGroupCancel:
					_wrapper.CancelAllOrders();
					break;

				case MessageTypes.OrderReplace:
					ProcessReplaceMessage((OrderReplaceMessage)message);
					break;

				case MessageTypes.Portfolio:
					ProcessPortfolioMessage((PortfolioMessage)message);
					break;

				case MessageTypes.PortfolioLookup:
					ProcessPortolioLookupMessage((PortfolioLookupMessage)message);
					break;

				case MessageTypes.MarketData:
					ProcessMarketDataMessage((MarketDataMessage)message);
					break;

				case MessageTypes.SecurityLookup:
					ProcessSecurityLookupMessage((SecurityLookupMessage)message);
					break;
			}
		}
		private void OnDisconnected(Exception error)
		{
			DisposeWrapper();

			SendOutMessage(new DisconnectMessage { Error = error });

			_wrapper = null;
		}
Exemplo n.º 4
0
        /// <summary>
        /// Отправить сообщение.
        /// </summary>
        /// <param name="message">Сообщение.</param>
        protected override void OnSendInMessage(Message message)
        {
            switch (message.Type)
            {
            case MessageTypes.Reset:
            {
                _tempDepths.Clear();
                _candleTransactions.Clear();
                _bestQuotes.Clear();

                _lookupSecuritiesId = 0;
                _lookupPortfoliosId = 0;

                //_smartOrderIds.Clear();
                //_smartIdOrders.Clear();

                if (_wrapper != null)
                {
                    try
                    {
                        DisposeWrapper();
                    }
                    catch (Exception ex)
                    {
                        SendOutError(ex);
                    }

                    try
                    {
                        _wrapper.Disconnect();
                    }
                    catch (Exception ex)
                    {
                        SendOutError(ex);
                    }

                    _wrapper = null;
                }

                SendOutMessage(new ResetMessage());

                break;
            }

            case MessageTypes.Connect:
            {
                if (_wrapper != null)
                {
                    throw new InvalidOperationException(LocalizedStrings.Str1619);
                }

                switch (Version)
                {
                case SmartComVersions.V2:
                    _wrapper = new SmartCom2Wrapper();
                    break;

                case SmartComVersions.V3:
                    _wrapper = (Environment.Is64BitProcess
                                                                ? (ISmartComWrapper) new SmartCom3Wrapper64
                        {
                            ClientSettings = ClientSettings,
                            ServerSettings = ServerSettings,
                        }
                                                                : new SmartCom3Wrapper32
                        {
                            ClientSettings = ClientSettings,
                            ServerSettings = ServerSettings,
                        });

                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                _wrapper.NewPortfolio          += OnNewPortfolio;
                _wrapper.PortfolioChanged      += OnPortfolioChanged;
                _wrapper.PositionChanged       += OnPositionChanged;
                _wrapper.NewMyTrade            += OnNewMyTrade;
                _wrapper.NewOrder              += OnNewOrder;
                _wrapper.OrderFailed           += OnOrderFailed;
                _wrapper.OrderCancelFailed     += OnOrderCancelFailed;
                _wrapper.OrderChanged          += OnOrderChanged;
                _wrapper.OrderReRegisterFailed += OnOrderReRegisterFailed;
                _wrapper.OrderReRegistered     += OnOrderReRegistered;

                _wrapper.NewSecurity     += OnNewSecurity;
                _wrapper.SecurityChanged += OnSecurityChanged;
                _wrapper.QuoteChanged    += OnQuoteChanged;
                _wrapper.NewTrade        += OnNewTrade;
                _wrapper.NewHistoryTrade += OnNewHistoryTrade;
                _wrapper.NewBar          += OnNewBar;

                _wrapper.Connected    += OnConnected;
                _wrapper.Disconnected += OnDisconnected;

                _wrapper.Connect(Address.GetHost(), (short)Address.GetPort(), Login, Password.To <string>());

                break;
            }

            case MessageTypes.Disconnect:
            {
                if (_wrapper == null)
                {
                    throw new InvalidOperationException(LocalizedStrings.Str1856);
                }

                _wrapper.Disconnect();

                break;
            }

            case MessageTypes.OrderRegister:
                ProcessRegisterMessage((OrderRegisterMessage)message);
                break;

            case MessageTypes.OrderCancel:
                ProcessCancelMessage((OrderCancelMessage)message);
                break;

            case MessageTypes.OrderGroupCancel:
                _wrapper.CancelAllOrders();
                break;

            case MessageTypes.OrderReplace:
                ProcessReplaceMessage((OrderReplaceMessage)message);
                break;

            case MessageTypes.Portfolio:
                ProcessPortfolioMessage((PortfolioMessage)message);
                break;

            case MessageTypes.PortfolioLookup:
                ProcessPortolioLookupMessage((PortfolioLookupMessage)message);
                break;

            case MessageTypes.MarketData:
                ProcessMarketDataMessage((MarketDataMessage)message);
                break;

            case MessageTypes.SecurityLookup:
                ProcessSecurityLookupMessage((SecurityLookupMessage)message);
                break;
            }
        }
        /// <summary>
        /// Отправить сообщение.
        /// </summary>
        /// <param name="message">Сообщение.</param>
        protected override void OnSendInMessage(Message message)
        {
            switch (message.Type)
            {
            case MessageTypes.Connect:
            {
                _tempDepths.Clear();
                _candleTransactions.Clear();
                _bestQuotes.Clear();

                _lookupSecuritiesId = 0;
                _lookupPortfoliosId = 0;

                //_smartOrderIds.Clear();
                //_smartIdOrders.Clear();

                if (SessionHolder.Session == null)
                {
                    _isSessionOwner = true;

                    switch (SessionHolder.Version)
                    {
                    case SmartComVersions.V2:
                        Session = new SmartCom2Wrapper();
                        break;

                    case SmartComVersions.V3:
                        Session = (Environment.Is64BitProcess
                                                                        ? (ISmartComWrapper) new SmartCom3Wrapper64
                            {
                                ClientSettings = SessionHolder.ClientSettings,
                                ServerSettings = SessionHolder.ServerSettings,
                            }
                                                                        : new SmartCom3Wrapper32
                            {
                                ClientSettings = SessionHolder.ClientSettings,
                                ServerSettings = SessionHolder.ServerSettings,
                            });

                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }

                    Session.Connect(SessionHolder.Address.GetHost(), (short)SessionHolder.Address.GetPort(), SessionHolder.Login, SessionHolder.Password.To <string>());
                }
                else
                {
                    SendOutMessage(new ConnectMessage());
                }

                break;
            }

            case MessageTypes.Disconnect:
            {
                if (_isSessionOwner)
                {
                    Session.Disconnect();
                }
                else
                {
                    SendOutMessage(new DisconnectMessage());
                }

                break;
            }

            case MessageTypes.OrderRegister:
                ProcessRegisterMessage((OrderRegisterMessage)message);
                break;

            case MessageTypes.OrderCancel:
                ProcessCancelMessage((OrderCancelMessage)message);
                break;

            case MessageTypes.OrderGroupCancel:
                Session.CancelAllOrders();
                break;

            case MessageTypes.OrderReplace:
                ProcessReplaceMessage((OrderReplaceMessage)message);
                break;

            case MessageTypes.Portfolio:
                ProcessPortfolioMessage((PortfolioMessage)message);
                break;

            case MessageTypes.PortfolioLookup:
                ProcessPortolioLookupMessage((PortfolioLookupMessage)message);
                break;

            case MessageTypes.MarketData:
                ProcessMarketDataMessage((MarketDataMessage)message);
                break;

            case MessageTypes.SecurityLookup:
                ProcessSecurityLookupMessage((SecurityLookupMessage)message);
                break;
            }
        }