Ejemplo n.º 1
0
        /// <summary>
        /// Get the <see cref="IRetryTaskController"/> associated with the
        /// <see cref="IKucoinWebSocketClient"/> web socket stream.
        /// </summary>
        /// <param name="manager"></param>
        /// <param name="client"></param>
        /// <returns></returns>
        public static IRetryTaskController GetController(this IKucoinWebSocketManager manager, IKucoinWebSocketClient client)
        {
            Throw.IfNull(manager, nameof(manager));
            Throw.IfNull(client, nameof(client));

            return(manager.GetController(client.WebSocket));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Begin all controller actions.
        /// </summary>
        /// <param name="manager"></param>
        public static void BeginAll(this IKucoinWebSocketManager manager)
        {
            Throw.IfNull(manager, nameof(manager));

            foreach (var client in Clients(manager))
            {
                GetController(manager, client).Begin();
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Cancel all controller actions.
        /// </summary>
        /// <param name="manager"></param>
        /// <returns></returns>
        public static async Task CancelAllAsync(this IKucoinWebSocketManager manager)
        {
            Throw.IfNull(manager, nameof(manager));

            foreach (var client in Clients(manager))
            {
                await GetController(manager, client)
                .CancelAsync()
                .ConfigureAwait(false);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Get all managed <see cref="IKucoinWebSocketClient"/> clients.
        /// </summary>
        /// <param name="manager"></param>
        /// <returns></returns>
        public static IEnumerable <IKucoinWebSocketClient> Clients(this IKucoinWebSocketManager manager)
        {
            Throw.IfNull(manager, nameof(manager));

            yield return(manager.AggregateTradeClient);

            yield return(manager.CandlestickClient);

            yield return(manager.DepthClient);

            yield return(manager.StatisticsClient);

            yield return(manager.TradeClient);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Cancel all controller actions and unsubscribe all streams from all clients.
        /// </summary>
        /// <param name="manager"></param>
        /// <returns></returns>
        public static async Task UnsubscribeAllAsync(this IKucoinWebSocketManager manager)
        {
            Throw.IfNull(manager, nameof(manager));

            await CancelAllAsync(manager)
            .ConfigureAwait(false);

            var wasAutoStreamingDisabled = manager.IsAutoStreamingDisabled;

            manager.IsAutoStreamingDisabled = true; // disable auto-streaming.

            foreach (var client in Clients(manager))
            {
                client.UnsubscribeAll();

                // Wait for adapter asynchronous operation to complete.
                await((IKucoinWebSocketClientAdapter)client).Task
                .ConfigureAwait(false);
            }

            manager.IsAutoStreamingDisabled = wasAutoStreamingDisabled; // restore.
        }