public LocalMarketDataStorageDrive(LocalMarketDataDrive parent, SecurityId securityId, string fileName, StorageFormats format, IMarketDataDrive drive)
{
if (parent == null)
{
throw new ArgumentNullException("parent");
}
if (securityId.IsDefault())
{
throw new ArgumentNullException("securityId");
}
if (drive == null)
{
throw new ArgumentNullException("drive");
}
if (fileName.IsEmpty())
{
throw new ArgumentNullException("fileName");
}
_parent = parent;
_securityId = securityId;
_fileName = fileName;
_format = format;
_drive = drive;
_fileNameWithExtension = _fileName + GetExtension(_format);
_datesDict = new Lazy <CachedSynchronizedOrderedDictionary <DateTime, DateTime> >(() =>
{
var retVal = new CachedSynchronizedOrderedDictionary <DateTime, DateTime>();
var datesPath = GetDatesCachePath();
if (File.Exists(datesPath))
{
foreach (var date in LoadDates())
{
retVal.Add(date, date);
}
}
else
{
var rootDir = Path;
var dates = InteropHelper
.GetDirectories(rootDir)
.Where(dir => File.Exists(IOPath.Combine(dir, _fileNameWithExtension)))
.Select(dir => IOPath.GetFileName(dir).ToDateTime(_dateFormat));
foreach (var date in dates)
{
retVal.Add(date, date);
}
SaveDates(retVal.CachedValues);
}
return(retVal);
}).Track();
}