void IMarketDataStorageDrive.SaveStream(DateTime date, Stream stream) { date = date.ChangeKind(DateTimeKind.Utc); Directory.CreateDirectory(GetDataPath(date)); using (var file = File.OpenWrite(GetPath(date, false))) stream.CopyTo(file); var dates = DatesDict; dates[date] = date; SaveDates(Dates.ToArray()); }
Stream IMarketDataStorageDrive.LoadStream(DateTime date) { var path = GetPath(date.ChangeKind(DateTimeKind.Utc), true); return File.Exists(path) ? File.Open(path, FileMode.Open, FileAccess.ReadWrite, FileShare.Read) : Stream.Null; }
void IMarketDataStorageDrive.Delete(DateTime date) { date = date.ChangeKind(DateTimeKind.Utc); var path = GetPath(date, true); if (File.Exists(path)) { File.Delete(path); var dir = GetDirectoryName(path); if (Directory.EnumerateFiles(dir).IsEmpty()) { lock (_cacheSync) InteropHelper.BlockDeleteDir(dir); } } var dates = DatesDict; dates.Remove(date); SaveDates(Dates.ToArray()); }