/// <summary> /// To get the storage for <paramref name="path"/>. /// </summary> /// <param name="path">Path.</param> /// <returns>Market data storage.</returns> public IMarketDataDrive GetDrive(string path) { if (path.IsEmpty() || Guid.TryParse(path, out _) /* TODO remove few versions later 2019-08-06 */) { return(DefaultDrive); } var pair = CreatePair(path); return(_drives.SafeAdd(pair, key => { IMarketDataDrive drive; if (pair.Item2 == null) { drive = new LocalMarketDataDrive(path); } else { drive = new RemoteMarketDataDrive(new RemoteStorageClient(new Uri(pair.Item2.To <string>()))); } NewDriveCreated?.Invoke(drive); return drive; })); }
/// <summary> /// Получить хранилище маркет-данных. /// </summary> /// <param name="path">Путь к данным.</param> /// <returns>Хранилище маркет-данных.</returns> public IMarketDataDrive GetDrive(string path) { if (path.IsEmpty()) { return(DefaultDrive); } return(_drives.SafeAdd(path ?? string.Empty, key => { IMarketDataDrive drive; try { var addr = path.To <EndPoint>(); drive = new RemoteMarketDataDrive(new RemoteStorageClient(new Uri(addr.To <string>()))); } catch { drive = new LocalMarketDataDrive(path); } NewDriveCreated.SafeInvoke(drive); return drive; })); }