Exemplo n.º 1
0
        public void StreamMarketData(NewDataReceivedEvent newdatahandler)
        {
            if (null == newdatahandler)
                throw new ArgumentNullException();

            OnNewDataReceived = newdatahandler;

            var symbolReaderTask = new Task(SymbolReaderTaskWork);
            symbolReaderTask.Start();

            var symbolProcessorTask = new Task(SymbolProcessorTaskWork);
            symbolProcessorTask.Start();

            symbolReaderTask.Wait();
            dataQueue.CompleteAdding();

            symbolProcessorTask.Wait();

            _cts.Dispose();
            _cts = null;
        }
        public void PublishSymbolTicks(NewDataReceivedEvent publisher, CancellationToken token)
        {
            if (null == publisher)
                throw new ArgumentNullException("publisher callback required");

            foreach (var data in SymbolTicks.GetConsumingEnumerable())
            {
                if (token.IsCancellationRequested)
                    break;

                if (Processors.Any())
                {
                    foreach (var processor in Processors)
                        if (!processor.ProcessSecurity(data))
                            break;
                }

                if (null != publisher)
                    publisher((SymbolTick)data);
            }

            SymbolTicks.CompleteAdding();
        }