/// <summary>
        /// The DI constructor.
        /// </summary>
        /// <param name="client">The JSON client (required).</param>
        /// <param name="controller">The web socket stream controller (required).</param>
        /// <param name="streamControl">The web socket stream control (required).</param>
        /// <param name="logger">The logger (optional).</param>
        public UserDataWebSocketClientManager(IUserDataClient client, IWebSocketStreamController controller, IUserDataWebSocketStreamControl streamControl, ILogger <UserDataWebSocketClientManager> logger = null)
            : base(client, controller, logger)
        {
            Throw.IfNull(streamControl, nameof(streamControl));

            _streamControl = streamControl;

            _streamControl.ListenKeyUpdate += (s, a) =>
            {
                try
                {
                    if (a.NewListenKey == null)
                    {
                        Logger?.LogError($"{nameof(UserDataWebSocketClientManager)}: Failed to get new listen key.");
                        return;
                    }

                    // Unsubscribe client from stream.
                    Controller.Stream.Unsubscribe(Client, a.OldListenKey);

                    // Update client listen key.
                    HandleListenKeyChange(a.OldListenKey, a.NewListenKey);

                    // Subscribe client to new stream.
                    Controller.Stream.Subscribe(Client, a.NewListenKey);
                }
                catch (Exception e)
                {
                    Logger?.LogError(e, $"{nameof(UserDataWebSocketClientManager)}: Failed to update listen key.");
                }
            };
        }
 /// <summary>
 /// The DI constructor.
 /// </summary>
 /// <param name="client">The JSON client (required).</param>
 /// <param name="controller">The web socket stream controller (required).</param>
 /// <param name="logger">The logger (optional).</param>
 public CandlestickWebSocketClientManager(ICandlestickClient client, IWebSocketStreamController controller, ILogger <CandlestickWebSocketClientManager> logger = null)
     : base(client, controller, logger)
 {
 }
Пример #3
0
 /// <summary>
 /// The DI constructor.
 /// </summary>
 /// <param name="client">The JSON client (required).</param>
 /// <param name="controller">The web socket stream controller (required).</param>
 /// <param name="logger">The logger (optional).</param>
 public TradeWebSocketClientManager(ITradeClient client, IWebSocketStreamController controller, ILogger <TradeWebSocketClientManager> logger = null)
     : base(client, controller, logger)
 {
 }
 /// <summary>
 /// The DI constructor.
 /// </summary>
 /// <param name="client">The JSON client (required).</param>
 /// <param name="controller">The web socket stream controller (required).</param>
 /// <param name="logger">The logger (optional).</param>
 public DepthWebSocketClientManager(IDepthClient client, IWebSocketStreamController controller, ILogger <DepthWebSocketClientManager> logger = null)
     : base(client, controller, logger)
 {
 }
 /// <summary>
 /// The DI constructor.
 /// </summary>
 /// <param name="client">The JSON client (required).</param>
 /// <param name="controller">The web socket stream controller (required).</param>
 /// <param name="logger">The logger (optional).</param>
 public SymbolStatisticsWebSocketClientManager(ISymbolStatisticsClient client, IWebSocketStreamController controller, ILogger <SymbolStatisticsWebSocketClientManager> logger = null)
     : base(client, controller, logger)
 {
 }
Пример #6
0
 /// <summary>
 /// Wait until web socket is open.
 /// </summary>
 /// <param name="controller"></param>
 /// <param name="token"></param>
 /// <returns></returns>
 public static Task WaitUntilWebSocketOpenAsync(this IWebSocketStreamController controller, CancellationToken token = default)
 => controller.Stream.WebSocket.WaitUntilOpenAsync(token);