void _dataDelivery_OperationalStatusChangedEvent(IOperational operational, OperationalStateEnum previousOperationState) { if (operational.OperationalState != OperationalStateEnum.Operational) { return; } // Re-map the session orderInfo. RuntimeDataSessionInformation information = _dataDelivery.GetSymbolRuntimeSessionInformation(_symbol); if (information == null) { SystemMonitor.OperationError("Failed to map session information for quote provider."); _sessionInfo = DataSessionInfo.Empty; } else { _sessionInfo = information.Info; if (_dataDelivery.SubscribeToData(_sessionInfo, true, new DataSubscriptionInfo(true, false, null))) { RequestQuoteUpdate(false); } } }
/// <summary> /// /// </summary> public bool RemoveSymbol(Symbol symbol) { ISourceDataDelivery delivery = _delivery; if (delivery != null) { RuntimeDataSessionInformation info = delivery.GetSymbolRuntimeSessionInformation(symbol); if (info == null) { return(false); } delivery.SubscribeToData(info.Info, false, new DataSubscriptionInfo(true, false, null)); } lock (this) { _symbolQuotes.Remove(symbol); if (_symbolQuotes.Count == 0) {// Release the delivery on last. //_delivery.UnInitialize(); //_delivery.Dispose(); //_delivery = null; _dataSourceId = null; } } return(true); }
public bool AddSymbol(ComponentId dataSourceId, Symbol symbol, out string operationResultMessage) { if (_dataSourceId.HasValue && _dataSourceId.Value != dataSourceId) { operationResultMessage = "One source per watch component currently supported."; SystemMonitor.Error(operationResultMessage); return(false); } _dataSourceId = dataSourceId; if (_delivery == null) { _delivery = base.ObtainDataDelivery(_dataSourceId.Value); } RuntimeDataSessionInformation info = _delivery.GetSymbolRuntimeSessionInformation(symbol); if (info == null) { operationResultMessage = "Failed to obtain symbol runtime session information."; return(false); } _delivery.SubscribeToData(info.Info, true, new DataSubscriptionInfo(true, false, null)); _delivery.QuoteUpdateEvent += new QuoteUpdateDelegate(delivery_QuoteUpdateEvent); operationResultMessage = string.Empty; return(true); }
void _dataDelivery_OperationalStatusChangedEvent(IOperational operational, OperationalStateEnum previousOperationState) { if (operational.OperationalState != OperationalStateEnum.Operational) { return; } if (_sessionInfo.IsEmtpy) { SystemMonitor.OperationError("Data bar provider has no valid session assiged."); return; } // Re-map the session orderInfo. RuntimeDataSessionInformation information = _dataDelivery.GetSymbolRuntimeSessionInformation(_sessionInfo.Symbol); if (information == null) { SystemMonitor.OperationError("Failed to map session information for data provider."); _sessionInfo = DataSessionInfo.Empty; return; } else { _sessionInfo = information.Info; } if (_dataDelivery.SubscribeToData(_sessionInfo, true, new DataSubscriptionInfo(false, false, new TimeSpan[] { Period.Value })) == false) { SystemMonitor.OperationError("Failed to subscribe to bar data updates."); return; } RuntimeDataSessionInformation session = _dataDelivery.GetSymbolRuntimeSessionInformation(_sessionInfo.Symbol); if (session != null && session.AvailableDataBarPeriods.Contains(_period.Value)) { _dataDelivery.RequestDataHistoryUpdate(_sessionInfo, new DataHistoryRequest(_period.Value, _defaultHistoryBarsCount), false); } }
public bool SubscribeToData(DataSessionInfo session, bool subscribe, DataSubscriptionInfo subscription) { return(_sourceDataDelivery.SubscribeToData(session, subscribe, subscription)); }