Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
        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);
        }
Пример #5
0
        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;
 }
Пример #8
0
 public Task InterceptUnsubscriptionAsync(MqttUnsubscriptionInterceptorContext context)
 {
     LogToScreen("MQTT: Client " + context.ClientId + " unsubscribed from: " + context.Topic + Environment.NewLine);
     context.AcceptUnsubscription = true;
     return(null);
 }
Пример #9
0
 public async Task InterceptUnsubscriptionAsync(MqttUnsubscriptionInterceptorContext context)
 {
     await Task.FromResult(context.CloseConnection = false);
 }