public DataHistoryUpdate GetDataHistoryUpdate(DataSessionInfo session, DataHistoryRequest request) { if (request.Period != Period) { SystemMonitor.OperationWarning("Source queried for historic information of wrong period."); return null; } List<DataBar> bars = GetSymbolData(session.Symbol); if (bars != null) { return new DataHistoryUpdate(Period, bars); } return null; }
public DataHistoryUpdate GetDataHistoryUpdate(DataSessionInfo session, DataHistoryRequest request) { if (request.IsTickBased) { SystemMonitor.NotImplementedWarning(); return new DataHistoryUpdate(request.Period, new DataTick[] { }); } if (request.Period != _period) { return new DataHistoryUpdate(request.Period, new DataBar[] { }); } lock (this) { return new DataHistoryUpdate(request.Period, _history.ToArray()); } }
/// <summary> /// /// </summary> public bool RequestDataHistoryUpdate(DataSessionInfo sessionInfo, DataHistoryRequest request, bool waitResult) { if (_sourceDataBarProvider == null) { ConstructSourceDataBarProvider(request.Period); //SystemMonitor.Warning("Source data bar provider not created yet."); return true; } if (request.StartIndex.HasValue == false) { request.StartIndex = -1; } if (request.MaxValuesRetrieved.HasValue == false) { request.MaxValuesRetrieved = int.MaxValue; } if (request.Period != _sourceDataBarProvider.Period) { SystemMonitor.NotImplementedCritical("Mode not supported."); return false; } if (request.IsTickBased) { SystemMonitor.NotImplementedCritical("Mode not supported."); return false; } List<DataBar> bars = new List<DataBar>(); if (request.StartIndex < 0) { for (int i = Math.Max(0, _sourceDataBarProvider.BarCount - request.MaxValuesRetrieved.Value); i < _sourceDataBarProvider.BarCount; i++) { lock (_sourceDataBarProvider) { bars.Add(_sourceDataBarProvider.BarsUnsafe[i]); } } } else { for (int i = request.StartIndex.Value; i < request.MaxValuesRetrieved && i < _sourceDataBarProvider.BarCount; i++) { lock (_sourceDataBarProvider) { bars.Add(_sourceDataBarProvider.BarsUnsafe[i]); } } } if (this.DataHistoryUpdateEvent != null) { this.DataHistoryUpdateEvent(this, sessionInfo, new DataHistoryUpdate(request.Period, bars)); } return true; }
void SendDataHistoryUpdate(TransportInfo[] receivers, DataSessionInfo session, DataHistoryRequest request) { DataSourceStub.IImplementation implementation = Implementation; if (implementation == null) { return; } DataHistoryUpdate response = implementation.GetDataHistoryUpdate(session, request); SendRespondingToMany(receivers, new DataHistoryUpdateMessage(session, response, response != null)); }
/// <summary> /// /// </summary> /// <param name="expertID"></param> public RequestDataHistoryMessage(DataSessionInfo sessionInfo, DataHistoryRequest request) : base(sessionInfo) { _request = request; }
public DataHistoryUpdate GetDataHistoryUpdate(DataSessionInfo session, DataHistoryRequest request) { MBTradingConnectionManager manager = _manager; if (manager != null) { DataHistoryOperation operation = new DataHistoryOperation(session.Symbol.Name, request); if (manager.History.Place(operation) == false) { SystemMonitor.OperationError("Failed to place data history operation."); return null; } if (operation.CompletionEvent.WaitOne(TimeSpan.FromSeconds(120)) == false) { SystemMonitor.OperationError("Data history operation timed out."); return null; } return operation.Response; } return null; }
public bool RequestDataHistoryUpdate(DataSessionInfo sessionInfo, DataHistoryRequest request, bool waitResult) { if (OperationalState != OperationalStateEnum.Operational) { return false; } RequestDataHistoryMessage requestMessage = new RequestDataHistoryMessage(sessionInfo, request) { RequestResponce = false }; requestMessage.RequestResponce = waitResult; if (waitResult) { ResponceMessage responce = SendAndReceiveResponding<ResponceMessage>(SourceTransportInfo, requestMessage, this.DefaultTimeOut); return responce != null && responce.OperationResult; } else { SendResponding(SourceTransportInfo, requestMessage); return true; } }
/// <summary> /// /// </summary> public DataHistoryOperation(string symbol, DataHistoryRequest request) { _symbol = symbol; _request = request; }
/// <summary> /// Request bar dataDelivery from entry. /// </summary> public bool RequestDataHistoryUpdate(DataSessionInfo sessionInfo, DataHistoryRequest request, bool waitResult) { DataStoreEntry entry = DataStore.Instance.GetEntryBySessionInfo(sessionInfo); if (this.OperationalState != OperationalStateEnum.Operational || entry == null) { SystemMonitor.OperationError("Data history request received while not operational, or invalid session requrested."); return false; } if (entry.Period != request.Period) { SystemMonitor.OperationError("Data history request received but period not recognized."); return false; } if (request.MaxValuesRetrieved.HasValue == false) { request.MaxValuesRetrieved = int.MaxValue; } if (request.StartIndex.HasValue == false) { request.StartIndex = -1; } GeneralHelper.GenericReturnDelegate<bool> operationDelegate = delegate() { if (request.IsTickBased) { DataReaderWriter<DataTick> readerWriter = entry.GetDataTickReaderWriter(); List<DataTick> dataTicks; DataHistoryUpdate update = new DataHistoryUpdate(request.Period, new DataTick[] { }); if (readerWriter.Read(request.StartIndex.Value, request.MaxValuesRetrieved.Value, out dataTicks)) { update.DataTicksUnsafe.AddRange(dataTicks); if (DataHistoryUpdateEvent != null) { DataHistoryUpdateEvent(this, sessionInfo, update); } return true; } } else { DataReaderWriter<DataBar> readerWriter = entry.GetDataBarReaderWriter(); if (readerWriter == null) { SystemMonitor.OperationError("Failed to establish file reader writer for entry."); return false; } List<DataBar> dataBars; DataHistoryUpdate update = new DataHistoryUpdate(request.Period, new DataBar[] { }); bool readResult = false; if (request.StartIndex.Value < 0) {// Instruction is to read the last count items. readResult = readerWriter.ReadLast( request.MaxValuesRetrieved.Value, out dataBars); } else { readResult = readerWriter.Read(request.StartIndex.Value, request.MaxValuesRetrieved.Value, out dataBars); } if (readResult) { update.DataBarsUnsafe.AddRange(dataBars); if (DataHistoryUpdateEvent != null) { DataHistoryUpdateEvent(this, sessionInfo, update); } return true; } } return false; }; if (waitResult) { return operationDelegate(); } else { GeneralHelper.FireAndForget(operationDelegate); return true; } }