<commit_before>﻿using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Binance.Api;
using Binance.WebSocket.Events;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

namespace Binance.WebSocket.UserData
{
    /// <summary>
    /// A <see cref="IMultiUserDataWebSocketClient"/> implementation.
    /// </summary>
    public class MultiUserDataWebSocketClient : UserDataWebSocketClient, IMultiUserDataWebSocketClient
    {
        #region Private Fields

        private Timer _keepAliveTimer;

        #endregion Private Fields

        #region Constructors

        /// <summary>
        /// Default constructor provides default Binance API and web socket client,
        /// but no options support or logging.
        /// </summary>
        public MultiUserDataWebSocketClient()
            : this(new BinanceApi(), new BinanceWebSocketStream())
        { }

        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="api">The Binance API.</param>
        /// <param name="webSocket">The WebSocket stream.</param>
        /// <param name="options">The options.</param>
        /// <param name="logger">The logger.</param>
        public MultiUserDataWebSocketClient(IBinanceApi api, IWebSocketStream webSocket, IOptions<UserDataWebSocketManagerOptions> options = null, ILogger<UserDataWebSocketClient> logger = null)
            : base(api, webSocket, logger)<commit_msg>Make incomplete MultiUserDataWebSocketClient internal<commit_after>﻿using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Binance.Api;
using Binance.WebSocket.Events;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

namespace Binance.WebSocket.UserData
{
    /// <summary>
    /// A <see cref="IMultiUserDataWebSocketClient"/> implementation.
    /// </summary>
    internal class MultiUserDataWebSocketClient : UserDataWebSocketClient, IMultiUserDataWebSocketClient
    {
        #region Private Fields

        private Timer _keepAliveTimer;

        #endregion Private Fields

        #region Constructors

        /// <summary>
        /// Default constructor provides default Binance API and web socket client,
        /// but no options support or logging.
        /// </summary>
        public MultiUserDataWebSocketClient()
            : this(new BinanceApi(), new BinanceWebSocketStream())
        { }

        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="api">The Binance API.</param>
        /// <param name="webSocket">The WebSocket stream.</param>
        /// <param name="options">The options.</param>
        /// <param name="logger">The logger.</param>
        public MultiUserDataWebSocketClient(IBinanceApi api, IWebSocketStream webSocket, IOptions<UserDataWebSocketManagerOptions> options = null, ILogger<UserDataWebSocketClient> logger = null)
            : base(api, webSocket, logger)
{'fraction_non_alphanumeric': 0.11006711409395974, 'fraction_numerical': 0.0, 'mean_word_length': 2.891644908616188, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2275141', 'n_tokens_mistral': 774, 'n_tokens_neox': 767, 'n_words': 192}