Ejemplo n.º 1
0
        public async Task <MqttClientSubscribeResult> SubscribeAsync(SubscriptionInfo subscriptionInfo, CancellationToken cancellationToken = default)
        {
            string topic = subscriptionInfo?.Topic;

            _logger.LogInformation($"Subscribing to topic {topic} with {subscriptionInfo?.ConsumerType?.Name}");

            var containsKey = _subsManager.HasSubscriptionsForEvent(topic);

            if (!containsKey)
            {
                if (await _mqttPersisterConnection.TryRegisterMessageHandlerAsync(MessageReceivedAsync, cancellationToken))
                {
                    _subsManager.TryAddSubscription(subscriptionInfo);
                    return(await OnSubscribesAsync(topic, cancellationToken));
                }
            }

            return(null);
        }