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));
        }
Пример #2
0
        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);
        }