/// <summary> /// Create thread that will save Ticks /// </summary> /// <param name="listTicks">List with source ticks</param> /// <param name="saveIntervalMs">Interval in miliseconds to save the ticks</param> /// <param name="historicalTicksConnString">connection string to DB</param> public SaveTicks(BlockingCollection <MessageTick> listTicks, int saveIntervalMs, string historicalTicksConnString) { ticksRepository = new HistoricalTicksDBRepository(historicalTicksConnString); saveIntervalInMs = saveIntervalMs; thread = new Thread(() => ExecuteMethod(listTicks, this)); thread.Start(); }
internal SymbolsTickManager() { mainConfig = ConfigurationsManager.ConfigurationsManager.GetConfigurations(); config = mainConfig.ConvRatesServiceConfiguration; ticksRepository = new HistoricalTicksDBRepository(mainConfig.HistoricalTicksConfiguration.HistoricalTicksConnString); instrumentsRepository = new TradingInstrumentsDBRepository(mainConfig.BackOfficeConfiguration.TradingInstrumentsManagementConnectionString); long instrumentsRefreshTimerPeriodMsec = Convert.ToInt64(config.SupportedSymbolsRefreshPeriodMin) * 60000; instrumentsRefreshTimer.Change(0, instrumentsRefreshTimerPeriodMsec); registerLatestSymbolsProviders(); }
static void SaveAndSendTicks(ITicksContainer containerTicks, IHistoricalTicksRepository repository) { long start = DateTime.Now.Ticks; //ITicksContainer _containerTicks = containerTicks; Dictionary <string, LatestSymbolTick> dictToSend = new Dictionary <string, LatestSymbolTick>(); ITicksContainer containerLatestTicks = new TicksDataTableContainer(); foreach (KeyValuePair <string, MessageTick> tick in symbolsCacheBid) { containerLatestTicks.AddEntry(tick.Value.Symbol, (int)tick.Value.Value, tick.Value.DecimalValue, tick.Value.DateTime, (byte)tick.Value.TickType, tick.Value.Provider); LatestSymbolTick latestSymbolTick = new LatestSymbolTick { Symbol = tick.Value.Symbol, BidValue = tick.Value.DecimalValue, Timestamp = tick.Value.DateTime }; dictToSend.Add(latestSymbolTick.Symbol, latestSymbolTick); } foreach (KeyValuePair <string, MessageTick> tick in symbolsCacheAsc) { containerLatestTicks.AddEntry(tick.Value.Symbol, (int)tick.Value.Value, tick.Value.DecimalValue, tick.Value.DateTime, (byte)tick.Value.TickType, tick.Value.Provider); } symbolsCacheBid.Clear(); symbolsCacheAsc.Clear(); double msPrepare = TimeSpan.FromTicks(DateTime.Now.Ticks - start).TotalMilliseconds; start = DateTime.Now.Ticks; Int32 totalTickCount = containerTicks.Count(); repository.TicksInsert(containerLatestTicks, containerTicks); double msInsert = TimeSpan.FromTicks(DateTime.Now.Ticks - start).TotalMilliseconds; containerLatestTicks = null; if (HSTickWriter.provider != null) { HSTickWriter.provider.ProvideLatestSymbols(dictToSend); } Console.WriteLine("Saved in " + DateTime.Now.Date.ToShortDateString() + ", " + DateTime.Now.ToLongTimeString() + "; prepare: " + msPrepare.ToString() + "; ïnsert:" + msInsert.ToString() + "; count: " + totalTickCount.ToString()); }