public QuoteDispatcherService(IQuoteUpdateService quoteviewupdateservvice, IStrategyQuoteFeedService feedstrategyquoteservice, TickArchiver tickarchiveservice, ILoggerFacade logger, BlockingCollection<Tick> tickqueue) { this._quoteviewupdateservice = quoteviewupdateservvice; this._feedstrategyquoteservice = feedstrategyquoteservice; this._tickarchiveservice = tickarchiveservice; this._tickqueue = tickqueue; this._logger = logger; ConfigManager conf = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<IConfigManager>() as ConfigManager; sampletime_ = conf.TickSampleTime; IObservable<MyEventArgs<Tick>> tickObservable = System.Reactive.Linq.Observable.FromEvent<MyEventArgs<Tick>>( h => TickReceived += h, h => TickReceived -= h); // only select trade // .BufferWithTime(TimeSpan.FromMilliseconds(_od)) // .Where(x => x.Count > 0) // .Subscribe(DataReceived, LogError); tickObservable.Where(e => e.Value.IsTrade).GroupBy(e => e.Value.FullSymbol) .Subscribe(group => group.Sample(TimeSpan.FromSeconds(sampletime_)) .Subscribe(QuoteDispatcher)); }
private void RegisterViewsAndServices() { // 0. intialize tickqueue and basket _tickqueue = new BlockingCollection<Tick>(_configmanagerservice.TickQueueCapacity); _basket = Basket.DeserializeFromXML(Util.GetRootPath() + _configmanagerservice.SettingPath + "basket.xml"); // 1. BrokerService, no need to register _brokerservice = new BrokerService(_configmanagerservice, _eventAggregator, _logger, _globalidservice, _tickqueue, _basket); // 2. Tick arichive service, no need to register _tickarchiveservice = new TickArchiver(Util.GetRootPath() + _configmanagerservice.TickPath + _configmanagerservice.DefaultBroker); // 3. QuuoteDispatcher Service, no need to register _quotedispatcherservice = new QuoteDispatcherService(_quoteupdateservice, _feedstrategyservice, _tickarchiveservice, _logger, _tickqueue); }