17 using System.Collections.Generic;
20 using Newtonsoft.Json;
37 private static readonly
object DataFolderMarketHoursDatabaseLock =
new object();
39 private readonly Dictionary<SecurityDatabaseKey, Entry> _entries;
53 if (_alwaysOpenMarketHoursDatabase ==
null)
55 _alwaysOpenMarketHoursDatabase =
new AlwaysOpenMarketHoursDatabaseImpl();
58 return _alwaysOpenMarketHoursDatabase;
68 _entries = exchangeHours;
113 lock (DataFolderMarketHoursDatabaseLock)
115 _dataFolderMarketHoursDatabase =
null;
126 var result = _dataFolderMarketHoursDatabase;
129 lock (DataFolderMarketHoursDatabaseLock)
131 if (_dataFolderMarketHoursDatabase ==
null)
134 _dataFolderMarketHoursDatabase =
FromFile(path);
136 result = _dataFolderMarketHoursDatabase;
166 dataTimeZone = dataTimeZone ?? exchangeHours.
TimeZone;
168 var entry =
new Entry(dataTimeZone, exchangeHours);
169 _entries[key] = entry;
202 if (!
TryGetEntry(market, symbol, securityType, out entry))
205 Log.
Error($
"MarketHoursDatabase.GetExchangeHours(): {Messages.MarketHoursDatabase.ExchangeHoursNotFound(key, _entries.Keys)}");
216 throw new ArgumentException(exception);
249 return _entries.TryGetValue(symbolKey, out entry)
251 || _entries.TryGetValue(symbolKey.CreateCommonKey(), out entry)
257 && _entries.TryGetValue(
new SecurityDatabaseKey(market, $
"TYPE.{customType}", securityType), out entry));
282 stringSymbol =
string.Empty;
300 stringSymbol = symbol.
Value;
315 return _entries.ContainsKey(key);
349 ? base.GetEntry(market, symbol, securityType).ExchangeHours.TimeZone
355 public AlwaysOpenMarketHoursDatabaseImpl()