public MqttClientConnectionProcessingManager(ILogger logger, IMqttClientConnectionManager clientConnectionManager, MqttUacManager uacManager, MqttAsyncTcpReceiver asyncTcpReceiver)
 {
     this.logger = logger;
     this.clientConnectionManager = clientConnectionManager;
     this.uacManager       = uacManager;
     this.asyncTcpReceiver = asyncTcpReceiver;
     publishManager        = new MqttPublishManager(logger);
     rawMessageQueue       = new BlockingCollection <MqttRawMessage>();
     clientConnectionsWithInflightQueuesToProcess      = new BlockingCollection <InflightQueueProcessEvent>();
     clientConnectionsWithInternalEventQueuesToProcess = new BlockingCollection <MqttClientConnection>();
 }
Ejemplo n.º 2
0
        public MqttAsyncTcpSocketListener(IMqttClientConnectionStarter clientConnectionStarter, IMqttClientConnectionManager connectionManager, MqttOptions options)
        {
            this.clientConnectionStarter = clientConnectionStarter;
            this.connectionManager       = connectionManager;
            poolOfAcceptEventArgs        = new SocketAsyncEventArgsPool();
            for (var i = 0; i < options.NumberOfAcceptSaea; i++)
            {
                this.poolOfAcceptEventArgs.Push(CreateNewSaeaForAccept());
            }

            // create the socket which listens for incoming connections
            listenSocket = new Socket(options.EndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            listenSocket.Bind(options.EndPoint);
        }
Ejemplo n.º 3
0
        public MqttBroker(ILogger logger, MqttOptions options)
        {
            MqttAsyncTcpSender.Init(options);

            this.logger            = logger;
            this.uacManager        = new MqttUacManager();
            this.rawMessageManager = new MqttRawMessageManager(options);
            this.asyncTcpReceiver  = new MqttAsyncTcpReceiver(rawMessageManager);
            this.connectionManager = new MqttClientConnectionManager(logger, options, asyncTcpReceiver);

            var numberOfProcessingManagersNeeded = options.MaxConnections / options.ConnectionsPrProcessingManager;

            this.processingManagers = new MqttClientConnectionProcessingManager[numberOfProcessingManagersNeeded];
            for (var i = 0; i < processingManagers.Length; i++)
            {
                processingManagers[i] = new MqttClientConnectionProcessingManager(logger, connectionManager, uacManager, asyncTcpReceiver);
            }

            this.processingLoadbalancer = new MqttProcessingLoadbalancer(logger, processingManagers);

            this.socketListener = new MqttAsyncTcpSocketListener(processingLoadbalancer, connectionManager, options);
        }