public LocalMessageStorage(LocalSecurityMarketDataStorage parent, string fileName, IMessageSerializer <TMessage> serializer)
                {
                    if (parent == null)
                    {
                        throw new ArgumentNullException("parent");
                    }

                    if (serializer == null)
                    {
                        throw new ArgumentNullException("serializer");
                    }

                    if (fileName.IsEmpty())
                    {
                        throw new ArgumentNullException("fileName");
                    }

                    _parent                = parent;
                    _fileName              = fileName;
                    _serializer            = serializer;
                    _fileNameWithExtension = _fileName + GetExtension(_serializer);

                    _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 = _parent.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();
                }
            public LocalMarketDataStorageDrive(string fileName, string path, StorageFormats format, IMarketDataDrive drive)
            {
                if (drive == null)
                {
                    throw new ArgumentNullException("drive");
                }

                if (fileName.IsEmpty())
                {
                    throw new ArgumentNullException("fileName");
                }

                if (path.IsEmpty())
                {
                    throw new ArgumentNullException("path");
                }

                _fileName = fileName;
                _path     = path;
                _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 dates = InteropHelper
                                    .GetDirectories(_path)
                                    .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();
            }
Esempio n. 3
0
            //private static readonly Version _dateVersion = new Version(1, 0);

            public LocalMarketDataStorageDrive(Type dataType, object arg, string path, StorageFormats format, LocalMarketDataDrive drive)
            {
                var fileName = GetFileName(dataType, arg);

                if (path.IsEmpty())
                {
                    throw new ArgumentNullException(nameof(path));
                }

                _path  = path;
                _drive = drive ?? throw new ArgumentNullException(nameof(drive));
                _fileNameWithExtension = fileName + GetExtension(format);
                _datesPath             = IOPath.Combine(_path, fileName + format + "Dates.txt");

                _dataType = DataType.Create(dataType, arg);

                _datesDict = new Lazy <CachedSynchronizedOrderedDictionary <DateTime, DateTime> >(() =>
                {
                    var retVal = new CachedSynchronizedOrderedDictionary <DateTime, DateTime>();

                    if (File.Exists(_datesPath))
                    {
                        foreach (var date in LoadDates())
                        {
                            retVal.Add(date, date);
                        }
                    }
                    else
                    {
                        var dates = InteropHelper
                                    .GetDirectories(_path)
                                    .Where(dir => File.Exists(IOPath.Combine(dir, _fileNameWithExtension)))
                                    .Select(dir => GetDate(IOPath.GetFileName(dir)));

                        foreach (var date in dates)
                        {
                            retVal.Add(date, date);
                        }

                        SaveDates(retVal.CachedValues);
                    }

                    return(retVal);
                }).Track();
            }
			public LocalMarketDataStorageDrive(string fileName, string path, StorageFormats format, IMarketDataDrive drive)
			{
				if (drive == null)
					throw new ArgumentNullException("drive");

				if (fileName.IsEmpty())
					throw new ArgumentNullException("fileName");

				if (path.IsEmpty())
					throw new ArgumentNullException("path");

				_fileName = fileName;
				_path = path;
				_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 dates = InteropHelper
							.GetDirectories(_path)
							.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();
			}