private void SessionOnDisconnected(bool unexpected) { SendOutMessage(new DisconnectMessage { Error = unexpected ? new InvalidOperationException(LocalizedStrings.Str2551) : null }); _client = null; }
/// <summary> /// Send message. /// </summary> /// <param name="message">Message.</param> protected override void OnSendInMessage(Message message) { switch (message.Type) { case MessageTypes.Reset: { _subscriptions.Clear(); if (_client != null) { try { DisposeClient(); } catch (Exception ex) { SendOutError(ex); } _client = null; } SendOutMessage(new ResetMessage()); break; } case MessageTypes.Connect: { if (_client != null) throw new InvalidOperationException(LocalizedStrings.Str1619); _subscriptions.Clear(); switch (Remoting) { case OpenECryRemoting.None: case OpenECryRemoting.Primary: _client = new OECClient(new InPlaceThreadPolicy()) { UUID = Uuid, EventBatchInterval = 0, RemoteHostingEnabled = Remoting == OpenECryRemoting.Primary, //PriceHost = "", //AutoSubscribe = false }; break; case OpenECryRemoting.Secondary: _client = OECClient.CreateInstance(true); break; default: throw new ArgumentOutOfRangeException(); } if (EnableOECLogging) { if (Remoting == OpenECryRemoting.Secondary) { this.AddWarningLog(LocalizedStrings.Str2552); } else { OEC.Log.ConsoleOutput = false; _client.SetLoggingConfig(new LoggingConfiguration { Level = OEC.API.LogLevel.All }); OEC.Log.Initialize(new OECLogger(this)); OEC.Log.Start(); } } _client.OnLoginComplete += SessionOnLoginComplete; _client.OnLoginFailed += SessionOnLoginFailed; _client.OnDisconnected += SessionOnDisconnected; _client.OnBeginEvents += SessionOnBeginEvents; _client.OnEndEvents += SessionOnEndEvents; _client.OnError += SessionOnError; _client.OnAccountRiskLimitChanged += SessionOnAccountRiskLimitChanged; _client.OnAccountSummaryChanged += SessionOnAccountSummaryChanged; _client.OnAllocationBlocksChanged += SessionOnAllocationBlocksChanged; _client.OnAvgPositionChanged += SessionOnAvgPositionChanged; _client.OnBalanceChanged += SessionOnBalanceChanged; _client.OnCommandUpdated += SessionOnCommandUpdated; _client.OnCompoundPositionGroupChanged += SessionOnCompoundPositionGroupChanged; _client.OnOrderConfirmed += SessionOnOrderConfirmed; _client.OnOrderFilled += SessionOnOrderFilled; _client.OnOrderStateChanged += SessionOnOrderStateChanged; _client.OnDetailedPositionChanged += SessionOnDetailedPositionChanged; _client.OnMarginCalculationCompleted += SessionOnMarginCalculationCompleted; _client.OnPortfolioMarginChanged += SessionOnPortfolioMarginChanged; _client.OnPostAllocation += SessionOnPostAllocation; _client.OnRiskLimitDetailsReceived += SessionOnRiskLimitDetailsReceived; _client.OnBarsReceived += SessionOnBarsReceived; _client.OnContinuousContractRuleChanged += SessionOnContinuousContractRuleChanged; _client.OnContractChanged += SessionOnContractChanged; _client.OnContractCreated += SessionOnContractCreated; _client.OnContractRiskLimitChanged += SessionOnContractRiskLimitChanged; _client.OnContractsChanged += SessionOnContractsChanged; _client.OnCurrencyPriceChanged += SessionOnCurrencyPriceChanged; _client.OnDOMChanged += SessionOnDomChanged; _client.OnDealQuoteUpdated += SessionOnDealQuoteUpdated; _client.OnHistogramReceived += SessionOnHistogramReceived; _client.OnHistoryReceived += SessionOnHistoryReceived; _client.OnIndexComponentsReceived += SessionOnIndexComponentsReceived; _client.OnLoggedUserClientsChanged += SessionOnLoggedUserClientsChanged; _client.OnNewsMessage += SessionOnNewsMessage; _client.OnOsmAlgoListLoaded += SessionOnOsmAlgoListLoaded; _client.OnOsmAlgoListUpdated += SessionOnOsmAlgoListUpdated; _client.OnPitGroupsChanged += SessionOnPitGroupsChanged; _client.OnPriceChanged += SessionOnPriceChanged; _client.OnPriceTick += SessionOnPriceTick; _client.OnProductCalendarUpdated += SessionOnProductCalendarUpdated; _client.OnQuoteDetailsChanged += SessionOnQuoteDetailsChanged; _client.OnRelationsChanged += SessionOnRelationsChanged; _client.OnSymbolLookupReceived += SessionOnSymbolLookupReceived; _client.OnTicksReceived += SessionOnTicksReceived; _client.OnTradersChanged += SessionOnTradersChanged; _client.OnUserMessage += SessionOnUserMessage; _client.OnUserStatusChanged += SessionOnUserStatusChanged; _client.Connect(Address.GetHost(), Address.GetPort(), Login, Password.To<string>(), UseNativeReconnect); break; } case MessageTypes.Disconnect: { if (_client == null) throw new InvalidOperationException(LocalizedStrings.Str1856); DisposeClient(); _client.Disconnect(); break; } case MessageTypes.SecurityLookup: { ProcessSecurityLookup((SecurityLookupMessage)message); break; } case MessageTypes.OrderRegister: { ProcessOrderRegister((OrderRegisterMessage)message); break; } case MessageTypes.OrderCancel: { ProcessOrderCancel((OrderCancelMessage)message); break; } case MessageTypes.OrderReplace: { ProcessOrderReplace((OrderReplaceMessage)message); break; } case MessageTypes.PortfolioLookup: { ProcessPortfolioLookupMessage((PortfolioLookupMessage)message); break; } case MessageTypes.OrderStatus: { ProcessOrderStatusMessage(); break; } case MessageTypes.MarketData: { ProcessMarketDataMessage((MarketDataMessage)message); break; } case MessageTypes.News: { var newsMsg = (Messages.NewsMessage)message; _client.SendMessage(_client.Users[newsMsg.Source], newsMsg.Headline); break; } } }
/// <summary> /// Send message. /// </summary> /// <param name="message">Message.</param> protected override void OnSendInMessage(Message message) { switch (message.Type) { case MessageTypes.Reset: { _subscriptions.Clear(); if (_client != null) { try { DisposeClient(); } catch (Exception ex) { SendOutError(ex); } _client = null; } SendOutMessage(new ResetMessage()); break; } case MessageTypes.Connect: { if (_client != null) { throw new InvalidOperationException(LocalizedStrings.Str1619); } _subscriptions.Clear(); switch (Remoting) { case OpenECryRemoting.None: case OpenECryRemoting.Primary: _client = new OECClient(new InPlaceThreadPolicy()) { UUID = Uuid, EventBatchInterval = 0, RemoteHostingEnabled = Remoting == OpenECryRemoting.Primary, //PriceHost = "", //AutoSubscribe = false }; break; case OpenECryRemoting.Secondary: _client = OECClient.CreateInstance(true); break; default: throw new ArgumentOutOfRangeException(); } if (EnableOECLogging) { if (Remoting == OpenECryRemoting.Secondary) { this.AddWarningLog(LocalizedStrings.Str2552); } else { OEC.Log.ConsoleOutput = false; _client.SetLoggingConfig(new LoggingConfiguration { Level = OEC.API.LogLevel.All }); OEC.Log.Initialize(new OECLogger(this)); OEC.Log.Start(); } } _client.OnLoginComplete += SessionOnLoginComplete; _client.OnLoginFailed += SessionOnLoginFailed; _client.OnDisconnected += SessionOnDisconnected; _client.OnBeginEvents += SessionOnBeginEvents; _client.OnEndEvents += SessionOnEndEvents; _client.OnError += SessionOnError; _client.OnAccountRiskLimitChanged += SessionOnAccountRiskLimitChanged; _client.OnAccountSummaryChanged += SessionOnAccountSummaryChanged; _client.OnAllocationBlocksChanged += SessionOnAllocationBlocksChanged; _client.OnAvgPositionChanged += SessionOnAvgPositionChanged; _client.OnBalanceChanged += SessionOnBalanceChanged; _client.OnCommandUpdated += SessionOnCommandUpdated; _client.OnCompoundPositionGroupChanged += SessionOnCompoundPositionGroupChanged; _client.OnOrderConfirmed += SessionOnOrderConfirmed; _client.OnOrderFilled += SessionOnOrderFilled; _client.OnOrderStateChanged += SessionOnOrderStateChanged; _client.OnDetailedPositionChanged += SessionOnDetailedPositionChanged; _client.OnMarginCalculationCompleted += SessionOnMarginCalculationCompleted; _client.OnPortfolioMarginChanged += SessionOnPortfolioMarginChanged; _client.OnPostAllocation += SessionOnPostAllocation; _client.OnRiskLimitDetailsReceived += SessionOnRiskLimitDetailsReceived; _client.OnBarsReceived += SessionOnBarsReceived; _client.OnContinuousContractRuleChanged += SessionOnContinuousContractRuleChanged; _client.OnContractChanged += SessionOnContractChanged; _client.OnContractCreated += SessionOnContractCreated; _client.OnContractRiskLimitChanged += SessionOnContractRiskLimitChanged; _client.OnContractsChanged += SessionOnContractsChanged; _client.OnCurrencyPriceChanged += SessionOnCurrencyPriceChanged; _client.OnDOMChanged += SessionOnDomChanged; _client.OnDealQuoteUpdated += SessionOnDealQuoteUpdated; _client.OnHistogramReceived += SessionOnHistogramReceived; _client.OnHistoryReceived += SessionOnHistoryReceived; _client.OnIndexComponentsReceived += SessionOnIndexComponentsReceived; _client.OnLoggedUserClientsChanged += SessionOnLoggedUserClientsChanged; _client.OnNewsMessage += SessionOnNewsMessage; _client.OnOsmAlgoListLoaded += SessionOnOsmAlgoListLoaded; _client.OnOsmAlgoListUpdated += SessionOnOsmAlgoListUpdated; _client.OnPitGroupsChanged += SessionOnPitGroupsChanged; _client.OnPriceChanged += SessionOnPriceChanged; _client.OnPriceTick += SessionOnPriceTick; _client.OnProductCalendarUpdated += SessionOnProductCalendarUpdated; _client.OnQuoteDetailsChanged += SessionOnQuoteDetailsChanged; _client.OnRelationsChanged += SessionOnRelationsChanged; _client.OnSymbolLookupReceived += SessionOnSymbolLookupReceived; _client.OnTicksReceived += SessionOnTicksReceived; _client.OnTradersChanged += SessionOnTradersChanged; _client.OnUserMessage += SessionOnUserMessage; _client.OnUserStatusChanged += SessionOnUserStatusChanged; _client.Connect(Address.GetHost(), Address.GetPort(), Login, Password.To <string>(), UseNativeReconnect); break; } case MessageTypes.Disconnect: { if (_client == null) { throw new InvalidOperationException(LocalizedStrings.Str1856); } DisposeClient(); _client.Disconnect(); break; } case MessageTypes.SecurityLookup: { ProcessSecurityLookup((SecurityLookupMessage)message); break; } case MessageTypes.OrderRegister: { ProcessOrderRegister((OrderRegisterMessage)message); break; } case MessageTypes.OrderCancel: { ProcessOrderCancel((OrderCancelMessage)message); break; } case MessageTypes.OrderReplace: { ProcessOrderReplace((OrderReplaceMessage)message); break; } case MessageTypes.PortfolioLookup: { ProcessPortfolioLookupMessage((PortfolioLookupMessage)message); break; } case MessageTypes.OrderStatus: { ProcessOrderStatusMessage(); break; } case MessageTypes.MarketData: { ProcessMarketDataMessage((MarketDataMessage)message); break; } case MessageTypes.News: { var newsMsg = (Messages.NewsMessage)message; _client.SendMessage(_client.Users[newsMsg.Source], newsMsg.Headline); break; } } }
/// <summary> /// Отправить сообщение. /// </summary> /// <param name="message">Сообщение.</param> protected override void OnSendInMessage(Message message) { switch (message.Type) { case MessageTypes.Connect: { _subscriptions.Clear(); if (SessionHolder.Session == null) { _isSessionOwner = true; switch (SessionHolder.Remoting) { case OpenECryRemoting.None: case OpenECryRemoting.Primary: SessionHolder.Session = new OECClient(new InPlaceThreadPolicy()) { UUID = SessionHolder.Uuid, EventBatchInterval = 0, RemoteHostingEnabled = SessionHolder.Remoting == OpenECryRemoting.Primary, //PriceHost = "", //AutoSubscribe = false }; break; case OpenECryRemoting.Secondary: SessionHolder.Session = OECClient.CreateInstance(true); break; default: throw new ArgumentOutOfRangeException(); } if (SessionHolder.EnableOECLogging) { if (SessionHolder.Remoting == OpenECryRemoting.Secondary) { SessionHolder.AddWarningLog(LocalizedStrings.Str2552); } else { Log.ConsoleOutput = false; SessionHolder.Session.SetLoggingConfig(new LoggingConfiguration { Level = LogLevel.All }); Log.Initialize(new OECLogger(SessionHolder)); Log.Start(); } } SessionHolder.Session.Connect(SessionHolder.Address.GetHost(), SessionHolder.Address.GetPort(), SessionHolder.Login, SessionHolder.Password.To <string>(), SessionHolder.UseNativeReconnect); } else { SendOutMessage(new ConnectMessage()); } break; } case MessageTypes.Disconnect: { if (_isSessionOwner) { SessionHolder.Session.Disconnect(); } else { SendOutMessage(new DisconnectMessage()); } break; } case MessageTypes.SecurityLookup: { ProcessSecurityLookup((SecurityLookupMessage)message); break; } case MessageTypes.OrderRegister: { ProcessOrderRegister((OrderRegisterMessage)message); break; } case MessageTypes.OrderCancel: { ProcessOrderCancel((OrderCancelMessage)message); break; } case MessageTypes.OrderReplace: { ProcessOrderReplace((OrderReplaceMessage)message); break; } case MessageTypes.PortfolioLookup: { ProcessPortfolioLookupMessage((PortfolioLookupMessage)message); break; } case MessageTypes.OrderStatus: { ProcessOrderStatusMessage(); break; } case MessageTypes.MarketData: { ProcessMarketDataMessage((MarketDataMessage)message); break; } case MessageTypes.News: { var newsMsg = (Messages.NewsMessage)message; SessionHolder.Session.SendMessage(SessionHolder.Session.Users[newsMsg.Source], newsMsg.Headline); break; } } }