/// <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.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; } }