public static IServiceCollection AddXenaMarketDataWebsocketClient(this IServiceCollection serviceCollection, string uri) { // TODO: use Microsoft.Extensions.Options. var mdWsOptions = new MarketDataWsClientOptions { Uri = uri }; return(serviceCollection .AddSingleton(mdWsOptions) .AddSingleton <IFixSerializer, FixSerializer>() .AddTransient <IMarketDataWsClient, MarketDataWsClient>()); }
private static async Task NoDiExampleAsync() { var logLevel = LogLevel.Debug; var fixSerializer = new FixSerializer(); var restSerializer = new RestSerializer(); // Market data websocket example var mdWsOptions = new MarketDataWsClientOptions { Uri = MdWsUri }; var mdLogger = Dependencies.ConsoleLogger <MarketDataWsClient>(logLevel); var mdWsClient = new MarketDataWsClient(mdWsOptions, fixSerializer, mdLogger); var mdExample = new MarketDataWsExample(mdWsClient, Dependencies.ConsoleLogger <MarketDataWsExample>(logLevel)); await mdExample.StartAsync(Token).ConfigureAwait(false); // Trading websocket example var tradingLogger = Dependencies.ConsoleLogger <TradingWsClient>(logLevel); var tradingWsClient = new TradingWsClient(TradingWsOptions, fixSerializer, tradingLogger); var tradingExample = new TradingWsExample(tradingWsClient, TradingWsOptions, Dependencies.ConsoleLogger <TradingWsExample>(logLevel)); var httpClient = new HttpClient { BaseAddress = new Uri("https://api.xena.exchange") }; var tradingRestClient = new TradingRestClient(TradingRestOptions, restSerializer, httpClient: httpClient); var tradingRestExample = new TradingRestExample( tradingRestClient, Dependencies.ConsoleLogger <TradingRestExample>(logLevel)); await tradingRestExample.StartAsync(Token).ConfigureAwait(false); // Market data rest example var marketDataRestClient = new MarketDataRestClient(restSerializer, httpClient: httpClient); var marketDataRestExample = new MarketDataRestExample( marketDataRestClient, Dependencies.ConsoleLogger <MarketDataRestExample>(logLevel)); await marketDataRestExample.StartAsync(Token).ConfigureAwait(false); }
public MarketDataWsClient(MarketDataWsClientOptions options, IFixSerializer serializer, ILogger <MarketDataWsClient> logger) : base(options, serializer, logger) { _mdOptions = options ?? throw new ArgumentNullException(nameof(options)); _subscriptions = new ConcurrentDictionary <string, Subscription>(); }