public MarketDataFeedMessagePublisher( ILogger <MarketDataFeedMessagePublisher> log, IOptions <CoinbaseApiOptions> apiOptions, IOptions <JsonSerializerOptions> serializerOptions, IOptions <MarketDataFeedMessagePublisherOptions> subscriptionOptions, IClientWebSocketFacade webSocket) { _log = log; _apiOptions = apiOptions.Value; _serializerOptions = serializerOptions.Value; _subscriptionOptions = subscriptionOptions.Value; _webSocket = webSocket; var channel = Channel.CreateUnbounded <FeedResponseMessage>(); _reader = channel.Reader; _writer = channel.Writer; }
private static async Task RecordMessages(Action <ICoinbaseApiBuilder>?configure, IClientWebSocketFacade webSocket) { var services = new ServiceCollection(); await using var serviceProvider = services .AddLogging() .AddTransient(_ => webSocket) .AddCoinbaseProApi(configure) .BuildServiceProvider(); var feed = serviceProvider.GetRequiredService <IMarketDataFeedMessagePublisher>(); await feed.StartAsync().ConfigureAwait(false); await Task.Delay(500); await feed.StopAsync().ConfigureAwait(false); }