Beispiel #1
0
        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;
        }
Beispiel #2
0
        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);
        }