/// <summary> /// Constructor /// </summary> /// <param name="dataDirectory"></param> /// <param name="symbol"></param> /// <param name="timeFrom"></param> /// <param name="timeTo"></param> public DucascopyReader(IConfiguration configuration, IFileManager <DucascopySymbol> fileManager, DucascopySymbol symbol, DateTime?timeFrom, DateTime timeTo) { _symbol = symbol ?? throw new ArgumentNullException("symbol", "Symbol must be specified"); _configuration = configuration; _fileManager = fileManager; _files = new LinkedList <IFile>(fileManager.GetExistingFiles(symbol, timeFrom ?? symbol.StartDate, timeTo).Where(f => f.Time >= timeFrom && f.Time < timeTo)); _fileCurrent = _files.First; _stream = new DucascopyFileSteam(Path.Combine(configuration.DataPath, _fileCurrent.Value.DestinationFile)); _reader = new DucascopyFileStreamReader(symbol, _fileCurrent.Value.Time, _stream); }
/// <summary> /// Dispose /// </summary> /// <param name="disposing">Disposing</param> public void Dispose(bool disposing) { if (_stream != null) { _stream.Dispose(); _stream = null; } if (_reader != null) { _reader.Dispose(); _reader = null; } }
/// <summary> /// Connect next reader /// </summary> private void ConnectNextReader() { _fileCurrent = _fileCurrent.Next; try { _stream = new DucascopyFileSteam(Path.Combine(_configuration.DataPath, _fileCurrent.Value.DestinationFile)); } catch (Exception exp) { Console.Write(exp.ToString()); ConnectNextReader(); } _reader = new DucascopyFileStreamReader(_symbol, _fileCurrent.Value.Time, _stream); }