private void SendMessageToUIDataBroker(IMessage message) { switch (message.APIDataType) { case EapiDataTypes.PositionData: var optionsPositionData = message as OptionsPositionData; if ((optionsPositionData != null) && optionsPositionData.HandledByPositionDataBuilder) { UIDataBroker.Enqueue(optionsPositionData); } break; case EapiDataTypes.UnlTradingData: case EapiDataTypes.OrderStatus: case EapiDataTypes.ManagedSecurity: case EapiDataTypes.AccountSummaryData: case EapiDataTypes.SecurityData: UIDataBroker.Enqueue(message, false); break; case EapiDataTypes.OptionData: UIDataBroker.Enqueue(message, false); Logger.Debug($"Distributer has sent to UIDataBroker {++_optionDataHandledCount} option data messages.@@@@"); break; } }
private void StartApplication() { try { _appManager = new AppManager(); _uiMessageHandler = new UIMessageHandler(); _uiMessageHandler.Start(); _uiMessageHandler.APIMessageArrive += DistributerOnAPIMessageArrive; _uiMessageHandler.ExceptionThrown += DistributerOnExceptionThrown; _appManager.Distributer.AddUIMessageHandler(_uiMessageHandler); UIDataBroker = new UIDataBroker(); UIDataBroker.Start(); _appManager.Distributer.AddUIDataBroker(UIDataBroker); _appManager.ConnectToBroker(); //For Test: Thread.Sleep(30000); _startApplicationMethodDone = true; this.InvokeIfRequired(() => { PopupMessageForm.ShowMessage("Start Application Method finish successfully!!!", Color.Green, this, 5, withSiren: false); UpdateGuiComponents(); }); _appManager.PositionNeedToOptimized += AppManagerOnPositionNeedToOptimized; _appManager.TWSDisconnected += AppManagerOnTWSDisconnected; } catch (Exception ex) { Logger.Error(ex); this.InvokeIfRequired(() => { MessageBox.Show(ex.Message); }); } }