public MqttAsyncTcpSocketListener(
            IMqttLoadbalancingManager loadbalancingManager,
            IMqttConnectionPoolManager connectionPoolManager,
            IOptions <MqttNetworkOptions> networkOptions)
        {
            this.loadbalancingManager  = loadbalancingManager;
            this.connectionPoolManager = connectionPoolManager;
            poolOfAcceptEventArgs      = new ConcurrentStack <SocketAsyncEventArgs>();

            for (var i = 0; i < networkOptions.Value.NumberOfAcceptSaea; i++)
            {
                poolOfAcceptEventArgs.Push(CreateNewSaeaForAccept());
            }

            var endpoint = new IPEndPoint(IPAddress.Any, networkOptions.Value.Port);

            // create the socket which listens for incoming connections
            listenSocket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            listenSocket.Bind(endpoint);
        }
 public MqttLoadbalancingWorker(IMqttLoadbalancingManager loadbalancingManager)
 {
     this.loadbalancingManager = loadbalancingManager;
 }