Exemplo n.º 1
0
        /// <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;
            }));
        }
Exemplo n.º 2
0
        /// <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;
            }));
        }