Exemple #1
0
        public MqttClient(
            MqttConnectPacket connectPacket,
            IMqttChannelAdapter channelAdapter,
            MqttSession session,
            MqttServerOptions serverOptions,
            MqttServerEventContainer eventContainer,
            MqttClientSessionsManager sessionsManager,
            IMqttNetLogger logger)
        {
            _serverOptions   = serverOptions ?? throw new ArgumentNullException(nameof(serverOptions));
            _eventContainer  = eventContainer;
            _sessionsManager = sessionsManager ?? throw new ArgumentNullException(nameof(sessionsManager));

            ChannelAdapter = channelAdapter ?? throw new ArgumentNullException(nameof(channelAdapter));
            Endpoint       = channelAdapter.Endpoint;

            Session        = session ?? throw new ArgumentNullException(nameof(session));
            _connectPacket = connectPacket ?? throw new ArgumentNullException(nameof(connectPacket));

            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            _logger = logger.WithSource(nameof(MqttClient));
        }
        async Task <List <string> > PrepareTopicHashSubscriptions(TopicHashSelector selector)
        {
            Dictionary <string, List <string> > topicsByPublisher;
            Dictionary <string, List <string> > singleWildcardTopicsByPublisher;
            Dictionary <string, List <string> > multiWildcardTopicsByPublisher;

            const int NumPublishers         = 1;
            const int NumTopicsPerPublisher = 10000;

            TopicGenerator.Generate(NumPublishers, NumTopicsPerPublisher, out topicsByPublisher, out singleWildcardTopicsByPublisher, out multiWildcardTopicsByPublisher);

            var topics = topicsByPublisher.FirstOrDefault().Value;
            var singleWildcardTopics = singleWildcardTopicsByPublisher.FirstOrDefault().Value;
            var multiWildcardTopics  = multiWildcardTopicsByPublisher.FirstOrDefault().Value;

            const string ClientId                = "Client1";
            var          logger                  = new Mockups.TestLogger();
            var          serverOptions           = new MQTTnet.Server.MqttServerOptions();
            var          eventContainer          = new MQTTnet.Server.MqttServerEventContainer();
            var          retainedMessagesManager = new MqttRetainedMessagesManager(eventContainer, logger);
            var          sessionManager          = new MqttClientSessionsManager(serverOptions, retainedMessagesManager, eventContainer, logger);

            _clientSession = new MQTTnet.Server.MqttSession(
                ClientId,
                false,
                new Dictionary <object, object>(),
                serverOptions,
                eventContainer,
                retainedMessagesManager,
                sessionManager
                );

            List <string> topicsToSubscribe;

            switch (selector)
            {
            case TopicHashSelector.SingleWildcard:
                topicsToSubscribe = singleWildcardTopics;
                break;

            case TopicHashSelector.MultiWildcard:
                topicsToSubscribe = multiWildcardTopics;
                break;

            default:
                topicsToSubscribe = topics;
                break;
            }
            foreach (var t in topicsToSubscribe)
            {
                var subPacket = new Packets.MqttSubscribePacket();
                var filter    = new Packets.MqttTopicFilter();
                filter.Topic = t;
                subPacket.TopicFilters.Add(filter);
                await _clientSession.SubscriptionsManager.Subscribe(subPacket, default(CancellationToken));
            }

            return(topics);
        }
Exemple #3
0
        public MqttRetainedMessagesManager(MqttServerEventContainer eventContainer, IMqttNetLogger logger)
        {
            _eventContainer = eventContainer ?? throw new ArgumentNullException(nameof(eventContainer));

            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }
            _logger = logger.WithSource(nameof(MqttRetainedMessagesManager));
        }
 public MqttClientSubscriptionsManager(
     MqttSession session,
     MqttServerEventContainer eventContainer,
     MqttRetainedMessagesManager retainedMessagesManager,
     ISubscriptionChangedNotification subscriptionChangedNotification)
 {
     _session                         = session ?? throw new ArgumentNullException(nameof(session));
     _eventContainer                  = eventContainer ?? throw new ArgumentNullException(nameof(eventContainer));
     _retainedMessagesManager         = retainedMessagesManager ?? throw new ArgumentNullException(nameof(retainedMessagesManager));
     _subscriptionChangedNotification = subscriptionChangedNotification;
 }
        public MqttClientSessionsManager(
            MqttServerOptions options,
            MqttRetainedMessagesManager retainedMessagesManager,
            MqttServerEventContainer eventContainer,
            IMqttNetLogger logger)
        {
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            _logger     = logger.WithSource(nameof(MqttClientSessionsManager));
            _rootLogger = logger;

            _options = options ?? throw new ArgumentNullException(nameof(options));
            _retainedMessagesManager = retainedMessagesManager ?? throw new ArgumentNullException(nameof(retainedMessagesManager));
            _eventContainer          = eventContainer ?? throw new ArgumentNullException(nameof(eventContainer));
        }
        public MqttSession(
            string clientId,
            bool isPersistent,
            IDictionary items,
            MqttServerOptions serverOptions,
            MqttServerEventContainer eventContainer,
            MqttRetainedMessagesManager retainedMessagesManager,
            MqttClientSessionsManager clientSessionsManager)
        {
            Id           = clientId ?? throw new ArgumentNullException(nameof(clientId));
            IsPersistent = isPersistent;
            Items        = items ?? throw new ArgumentNullException(nameof(items));

            _serverOptions         = serverOptions ?? throw new ArgumentNullException(nameof(serverOptions));
            _clientSessionsManager = clientSessionsManager ?? throw new ArgumentNullException(nameof(clientSessionsManager));

            SubscriptionsManager = new MqttClientSubscriptionsManager(this, eventContainer, retainedMessagesManager, clientSessionsManager);
        }