internal MqttServerImpl(IMqttChannelListener binaryChannelListener,
                         IPacketChannelFactory channelFactory,
                         IProtocolFlowProvider flowProvider,
                         IConnectionProvider connectionProvider,
                         ISubject <MqttUndeliveredMessage> undeliveredMessagesListener,
                         MqttConfiguration configuration)
 {
     _privateStreamListener       = new Subject <PrivateStream>();
     _binaryChannelListeners      = new[] { new PrivateChannelListener(_privateStreamListener, configuration), binaryChannelListener };
     _channelFactory              = channelFactory;
     _flowProvider                = flowProvider;
     _connectionProvider          = new NotifyingConnectionProvider(this, connectionProvider);
     _undeliveredMessagesListener = undeliveredMessagesListener;
     _configuration               = configuration;
 }
Exemplo n.º 2
0
        /// <summary>
        /// Creates an MQTT Server
        /// </summary>
        /// <param name="configuration">
        /// The configuration used for creating the Server
        /// See <see cref="MqttConfiguration" /> for more details about the supported values
        /// </param>
        /// <returns>A new MQTT Server</returns>
        /// <exception cref="MqttServerException">MqttServerException</exception>
        public IMqttServer CreateServer(MqttConfiguration configuration)
        {
            try
            {
                MqttTopicEvaluator               topicEvaluator              = new MqttTopicEvaluator(configuration);
                IMqttChannelListener             channelProvider             = _binding.GetChannelListener(configuration);
                PacketChannelFactory             channelFactory              = new PacketChannelFactory(topicEvaluator, configuration);
                InMemoryRepositoryProvider       repositoryProvider          = new InMemoryRepositoryProvider();
                ConnectionProvider               connectionProvider          = new ConnectionProvider();
                PacketIdProvider                 packetIdProvider            = new PacketIdProvider();
                Subject <MqttUndeliveredMessage> undeliveredMessagesListener = new Subject <MqttUndeliveredMessage>();
                ServerProtocolFlowProvider       flowProvider = new ServerProtocolFlowProvider(_authenticationProvider, connectionProvider, topicEvaluator,
                                                                                               repositoryProvider, packetIdProvider, undeliveredMessagesListener, configuration);

                return(new MqttServerImpl(channelProvider, channelFactory,
                                          flowProvider, connectionProvider, undeliveredMessagesListener, configuration));
            }
            catch (Exception ex)
            {
                _tracer.Error(ex, ServerProperties.Server_InitializeError);

                throw new MqttServerException(ServerProperties.Server_InitializeError, ex);
            }
        }