public Task ProceedUnsubscription(MqttUnsubscriptionInterceptorContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (string.IsNullOrWhiteSpace(context.ClientId)) { throw new ArgumentNullException(nameof(context.ClientId)); } if (string.IsNullOrWhiteSpace(context.Topic)) { throw new ArgumentNullException(nameof(context.Topic)); } // Save unsubscription to the database var eventLog = new EventLog { EventType = EventType.Unsubscription, EventDetails = $"Unsubscription: ClientId = {context.ClientId}, Topic = {context.Topic}." }; this.eventLogQueue.Enqueue(eventLog); return(Task.CompletedTask); }
public Task InterceptUnsubscriptionAsync(MqttUnsubscriptionInterceptorContext context) { try { var sessionItems = (PythonDictionary)context.SessionItems[MqttServerConnectionValidator.WrappedSessionItemsKey]; var pythonContext = new PythonDictionary { { "client_id", context.ClientId }, { "session_items", sessionItems }, { "topic", context.Topic }, { "accept_unsubscription", context.AcceptUnsubscription }, { "close_connection", context.CloseConnection } }; _pythonScriptHostService.InvokeOptionalFunction("on_intercept_unsubscription", pythonContext); context.AcceptUnsubscription = (bool)pythonContext["accept_unsubscription"]; context.CloseConnection = (bool)pythonContext["close_connection"]; } catch (Exception exception) { _logger.LogError(exception, "Error while intercepting unsubscription."); } return(Task.CompletedTask); }
public async Task InterceptUnsubscriptionAsync(MqttUnsubscriptionInterceptorContext context) { try { var repositoryGrain = clusterClient.GetGrain <IMqttRepositoryGrain>(0); await repositoryGrain.ProceedUnsubscription(context); } catch (Exception ex) { this.logger.Error("An error occurred: {@ex}.", ex); } }
public Task InterceptUnsubscriptionAsync(MqttUnsubscriptionInterceptorContext context) { try { _logger.LogInformation($"Received unsubscribe request from '{context.ClientId}' for topic: '{context.Topic}'"); context.AcceptUnsubscription = true; } catch (Exception exception) { _logger.LogError(exception, $"Error while handling unsubscribe request from '{context.ClientId}' for topic '{context.Topic}'"); } return(Task.CompletedTask); }
async Task <MqttUnsubscriptionInterceptorContext> InterceptUnsubscribe(string topicFilter) { var interceptor = _options.UnsubscriptionInterceptor; if (interceptor == null) { return(null); } var context = new MqttUnsubscriptionInterceptorContext { ClientId = _clientSession.ClientId, Topic = topicFilter, SessionItems = _clientSession.Items }; await interceptor.InterceptUnsubscriptionAsync(context).ConfigureAwait(false); return(context); }
public Task InterceptUnsubscriptionAsync(MqttUnsubscriptionInterceptorContext context) { return(Task.FromResult(context.AcceptUnsubscription = true)); }
public async Task InterceptUnsubscriptionAsync(MqttUnsubscriptionInterceptorContext context) { context.AcceptUnsubscription = true; }
public Task InterceptUnsubscriptionAsync(MqttUnsubscriptionInterceptorContext context) { LogToScreen("MQTT: Client " + context.ClientId + " unsubscribed from: " + context.Topic + Environment.NewLine); context.AcceptUnsubscription = true; return(null); }
public async Task InterceptUnsubscriptionAsync(MqttUnsubscriptionInterceptorContext context) { await Task.FromResult(context.CloseConnection = false); }