Example #1
0
        public DataHistoryUpdate GetDataHistoryUpdate(DataSessionInfo session, DataHistoryRequest request)
        {
            if (!IsPeriodSupported(request.Period))
            {
                SystemMonitor.OperationWarning("Source queried for historic information of wrong period.");
                return(null);
            }

            List <DataBar> bars = GetSymbolData(session.Symbol, request.Period);

            if (bars != null)
            {
                return(new DataHistoryUpdate(request.Period, bars));
            }

            return(null);
        }
Example #2
0
        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()));
            }
        }
        public bool RequestDataHistoryUpdate(DataSessionInfo sessionInfo, DataHistoryRequest request, bool waitResult)
        {
            if (OperationalState != OperationalStateEnum.Operational)
            {
                return(false);
            }

            RequestDataHistoryMessage requestMessage = new RequestDataHistoryMessage(sessionInfo, request)
            {
                RequestResponse = false
            };

            requestMessage.RequestResponse = waitResult;
            if (waitResult)
            {
                ResponseMessage response = SendAndReceiveResponding <ResponseMessage>(SourceTransportInfo, requestMessage, this.DefaultTimeOut);
                return(response != null && response.OperationResult);
            }
            else
            {
                SendResponding(SourceTransportInfo, requestMessage);
                return(true);
            }
        }
        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.Responce);
            }

            return(null);
        }
        /// <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 responce = implementation.GetDataHistoryUpdate(session, request);

            SendRespondingToMany(receivers, new DataHistoryUpdateMessage(session, responce, responce != null));
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="expertID"></param>
 public RequestDataHistoryMessage(DataSessionInfo sessionInfo, DataHistoryRequest request)
     : base(sessionInfo)
 {
     _request = request;
 }
Example #8
0
        /// <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);
            }
        }
Example #9
0
 /// <summary>
 ///
 /// </summary>
 public DataHistoryOperation(string symbol, DataHistoryRequest request)
 {
     _symbol  = symbol;
     _request = request;
 }