Beispiel #1
0
        public async Task StopAsync()
        {
            _cancellationTokenSource?.Cancel(false);
            _cancellationTokenSource?.Dispose();
            _cancellationTokenSource = null;

            foreach (var adapter in _adapters)
            {
                adapter.ClientAccepted -= OnClientAccepted;
                await adapter.StopAsync();
            }

            await _clientSessionsManager.StopAsync();

            _logger.LogInformation("Stopped.");
        }
Beispiel #2
0
        public async Task StopAsync()
        {
            try
            {
                if (_cancellationTokenSource == null)
                {
                    return;
                }

                _cancellationTokenSource.Cancel(false);
                _cancellationTokenSource.Dispose();

                foreach (var adapter in _adapters)
                {
                    adapter.ClientAccepted -= OnClientAccepted;
                    await adapter.StopAsync();
                }

                await _clientSessionsManager.StopAsync();

                _logger.Info <MqttServer>("Stopped.");
            }
            finally
            {
                _cancellationTokenSource = null;

                _retainedMessagesManager = null;

                if (_clientSessionsManager != null)
                {
                    _clientSessionsManager.ApplicationMessageReceived -= OnApplicationMessageReceived;
                    _clientSessionsManager.ClientConnected            -= OnClientConnected;
                    _clientSessionsManager.ClientDisconnected         -= OnClientDisconnected;
                }

                _clientSessionsManager = null;
            }
        }