Exemple #1
0
        public async Task <IObservable <BfTicker> > GetTickerSource(ProductCode productCode)
        {
            TryOpen();

            await InitProductCodeAliasesAsync();

            return(_tickSources.GetOrAdd(productCode, _ =>
            {
                var realProductCode = ProductCodeAliases.GetProductCodeFromAlias(productCode.ToEnumString());
                var source = new RealtimeTickerSource(_webSocket, JsonSerializerSettingsFactory.GetDefaultSettings(), realProductCode);
                _webSocketSources[source.Channel] = source;
                return source.Publish().RefCount();
            }));
        }
Exemple #2
0
        private async Task InitProductCodeAliasesAsync()
        {
            if (ProductCodeAliases.HasGotProductCodes())
            {
                return; // Already initialized
            }
            foreach (var response in await _client.GetAllMarketsAsync())
            {
                if (response.IsError)
                {
                    if (response.Exception != null)
                    {
                        throw response.Exception;
                    }
                    else
                    {
                        throw new InvalidOperationException(response.ErrorMessage);
                    }
                }

                ProductCodeAliases.Populate(response.GetResult());
            }
        }