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>(); }
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); }
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); }