public string StartTopicImport(string uid, MqttImportTopicParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (string.IsNullOrEmpty(uid)) { uid = Guid.NewGuid().ToString("D"); } var importer = new MqttTopicImporter(parameters, this, _logger); importer.Start(); lock (_importers) { if (_importers.TryGetValue(uid, out var existingImporter)) { existingImporter.Stop(); } _importers[uid] = importer; } _logger.Log(LogLevel.Information, "Started importer '{0}' for topic '{1}' from server '{2}'.", uid, parameters.Topic, parameters.Server); return(uid); }
public async Task <string> StartTopicImport(string uid, MqttImportTopicParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } if (string.IsNullOrEmpty(uid)) { uid = Guid.NewGuid().ToString("D"); } var importer = new MqttTopicImporter(parameters, _mqttService, _logger); await importer.Start().ConfigureAwait(false); await _importersLock.EnterAsync().ConfigureAwait(false); try { if (_importers.TryGetValue(uid, out var existingImporter)) { await existingImporter.Stop().ConfigureAwait(false); } _importers[uid] = importer; } finally { _importersLock.Exit(); } _logger.Log(LogLevel.Information, "Started importer '{0}' for topic '{1}' from server '{2}'.", uid, parameters.Topic, parameters.Server); return(uid); }