public void Start() { _storageService.TryReadOrCreate(out MqttServiceOptions options, MqttServiceOptions.Filename); var mqttFactory = new MqttFactory(); _enableMqttLogging = options.EnableLogging; if (_enableMqttLogging) { _mqttServer = mqttFactory.CreateMqttServer(new LoggerAdapter(_logger)); } else { _mqttServer = mqttFactory.CreateMqttServer(); } _mqttServer.UseApplicationMessageReceivedHandler(new MqttApplicationMessageReceivedHandlerDelegate(e => OnApplicationMessageReceived(e))); var serverOptions = new MqttServerOptionsBuilder() .WithDefaultEndpointPort(options.ServerPort) .WithPersistentSessions(); if (options.PersistRetainedMessages) { var storage = new MqttServerStorage(_storageService, _logger); storage.Start(); serverOptions.WithStorage(storage); } _mqttServer.StartAsync(serverOptions.Build()).GetAwaiter().GetResult(); Task.Factory.StartNew(() => ProcessIncomingMqttMessages(_systemCancellationToken.Token), _systemCancellationToken.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default); }
protected override void OnStart() { _storageService.SafeReadSerializedValue(out _options, DefaultDirectoryNames.Configuration, MqttServiceOptions.Filename); IsLowLevelMqttLoggingEnabled = _options.EnableLogging; var mqttFactory = new MqttFactory(); IMqttNetLogger mqttNetLogger; if (IsLowLevelMqttLoggingEnabled) { mqttNetLogger = new LoggerAdapter(_logger); } else { mqttNetLogger = new MqttNetLogger(); } _webSocketServerAdapter = new MqttWebSocketServerAdapter(mqttNetLogger); var serverAdapters = new List <IMqttServerAdapter> { new MqttTcpServerAdapter(mqttNetLogger), _webSocketServerAdapter }; _mqttServer = mqttFactory.CreateMqttServer(serverAdapters, mqttNetLogger); _mqttServer.UseApplicationMessageReceivedHandler(new MqttApplicationMessageReceivedHandlerDelegate(e => OnApplicationMessageReceived(e))); var serverOptions = new MqttServerOptionsBuilder() .WithDefaultEndpointPort(_options.ServerPort) .WithConnectionValidator(ValidateClientConnection) .WithPersistentSessions(); if (_options.PersistRetainedMessages) { var storage = new MqttServerStorage(_storageService, _systemCancellationToken, _logger); storage.Start(); serverOptions.WithStorage(storage); } _mqttServer.StartAsync(serverOptions.Build()).GetAwaiter().GetResult(); _systemCancellationToken.Token.Register(() => { _mqttServer.StopAsync().GetAwaiter().GetResult(); }); ParallelTask.StartLongRunning(ProcessIncomingMqttMessages, _systemCancellationToken.Token, _logger); }
public void Start() { _storageService.TryReadOrCreate(out _options, DefaultDirectoryNames.Configuration, MqttServiceOptions.Filename); var mqttFactory = new MqttFactory(); IsLowLevelMqttLoggingEnabled = _options.EnableLogging; if (IsLowLevelMqttLoggingEnabled) { _mqttServer = mqttFactory.CreateMqttServer(new LoggerAdapter(_logger)); } else { _mqttServer = mqttFactory.CreateMqttServer(); } _mqttServer.UseApplicationMessageReceivedHandler(new MqttApplicationMessageReceivedHandlerDelegate(e => OnApplicationMessageReceived(e))); var serverOptions = new MqttServerOptionsBuilder() .WithDefaultEndpointPort(_options.ServerPort) .WithConnectionValidator(ValidateClientConnection) .WithPersistentSessions(); if (_options.PersistRetainedMessages) { var storage = new MqttServerStorage(_storageService, _logger); storage.Start(); serverOptions.WithStorage(storage); } _mqttServer.StartAsync(serverOptions.Build()).GetAwaiter().GetResult(); _workerThread = new Thread(ProcessIncomingMqttMessages) { Name = nameof(MqttService), IsBackground = true }; _workerThread.Start(); }
public void Start() { _storageService.TryReadOrCreate(out MqttServiceOptions options, MqttServiceOptions.Filename); var mqttFactory = new MqttFactory(); IsLowLevelMqttLoggingEnabled = options.EnableLogging; if (IsLowLevelMqttLoggingEnabled) { _mqttServer = mqttFactory.CreateMqttServer(new LoggerAdapter(_logger)); } else { _mqttServer = mqttFactory.CreateMqttServer(); } _mqttServer.UseApplicationMessageReceivedHandler(new MqttApplicationMessageReceivedHandlerDelegate(e => OnApplicationMessageReceived(e))); var serverOptions = new MqttServerOptionsBuilder() .WithDefaultEndpointPort(options.ServerPort) .WithPersistentSessions(); if (options.PersistRetainedMessages) { var storage = new MqttServerStorage(_storageService, _logger); storage.Start(); serverOptions.WithStorage(storage); } _mqttServer.StartAsync(serverOptions.Build()).GetAwaiter().GetResult(); _workerThread = new Thread(ProcessIncomingMqttMessages) { Priority = ThreadPriority.AboveNormal, IsBackground = true }; _workerThread.Start(); }