Exemple #1
0
        private MqttIpcServer(MqttIpcServerConfiguration configuration, IIpcSerializer serializer, IIpcPacketRouter router, IIpcPacketHandlersContainer packetHandlersContainer)
        {
            _serializer = serializer;
            _router     = router;
            _packetHandlersContainer = packetHandlersContainer;
            string clientName = configuration.ClientName;
            string endPoint   = configuration.EndPoint;


            _client        = new MqttFactory().CreateManagedMqttClient(new MqttNetLogger(clientName));
            _packetFactory = new PacketContainerFactory();
            _queues        = new HashSet <string>();
            _packetHandlersContainer.Registered   += (sender, type) => CheckRouting(type).ConfigureAwait(false).GetAwaiter().GetResult();
            _packetHandlersContainer.Unregistered += (sender, type) =>
            {
                IRoutingInformation infos = _router.GetRoutingInformationsAsync(type).ConfigureAwait(false).GetAwaiter().GetResult();
                _client.UnsubscribeAsync(infos.IncomingTopic).ConfigureAwait(false).GetAwaiter().GetResult();
            };
            ManagedMqttClientOptions options = new ManagedMqttClientOptionsBuilder()
                                               .WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
                                               .WithClientOptions(new MqttClientOptionsBuilder()
                                                                  .WithClientId(clientName)
                                                                  .WithTcpServer(endPoint)
                                                                  .Build())
                                               .Build();

            _client.ApplicationMessageReceived += (sender, args) => OnMessage(args.ClientId, args.ApplicationMessage);
            _client.StartAsync(options).ConfigureAwait(false).GetAwaiter().GetResult();
            _client.Connected    += (sender, args) => _log.Info($"[CONNECTED] {clientName} is connected on MQTT Broker {endPoint}");
            _client.Disconnected += (sender, args) => _log.Info($"[DISCONNECTED] {clientName} has been disconnected on MQTT Broker {endPoint}");
        }
Exemple #2
0
        protected RabbitMqServer(RabbitMqConfiguration config, IIpcPacketHandlersContainer packetHandlersContainer)
        {
            _configuration           = config;
            _packetHandlersContainer = packetHandlersContainer;
            var factory = new ConnectionFactory {
                HostName = _configuration.Address, Password = _configuration.Password, Port = _configuration.Port
            };

            _requestQueueName   = _configuration.RequestQueueName;
            _responseQueueName  = _configuration.ResponseQueueName;
            _broadcastQueueName = _configuration.BroadcastQueueName;

            _packetContainerFactory = new PacketContainerFactory();

            _connection = factory.CreateConnection();
            _channel    = _connection.CreateModel();

            _channel.QueueDeclare(_requestQueueName, true, false, false, null);
            _channel.QueueDeclare(_responseQueueName, true, false, false, null);
            _channel.QueueDeclare(_broadcastQueueName, true, false, false, null);

            var consumer = new EventingBasicConsumer(_channel);

            consumer.Received += OnMessage;
            _channel.BasicConsume(_requestQueueName, true, consumer);
            _channel.BasicConsume(_broadcastQueueName, true, consumer);
            Log.Info("IPC Server launched !");
        }
Exemple #3
0
        public MqttIpcServer(MqttIpcServerConfiguration configuration, IIpcSerializer serializer, IIpcPacketRouter router, IIpcPacketHandlersContainer packetHandlersContainer)
        {
            _serializer = serializer;
            _router     = router;
            _packetHandlersContainer = packetHandlersContainer;

            _client  = new MqttFactory().CreateManagedMqttClient(new MqttNetLogger(configuration.ClientName));
            _queues  = new HashSet <string>();
            _options = new ManagedMqttClientOptionsBuilder()
                       .WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
                       .WithClientOptions(new MqttClientOptionsBuilder()
                                          .WithClientId(configuration.ClientName)
                                          .WithTcpServer(configuration.EndPoint)
                                          .Build())
                       .Build();

            // event handlers
            _client.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(Client_OnMessage);
            _client.ConnectedHandler    = new MqttClientConnectedHandlerDelegate(Client_OnConnected);
            _client.DisconnectedHandler = new MqttClientDisconnectedHandlerDelegate(Client_OnDisconnected);

            _packetHandlersContainer.Registered   += HandlersContainer_OnRegistered;
            _packetHandlersContainer.Unregistered += HandlersContainer_OnUnregistered;
        }
Exemple #4
0
 public MqttIpcServer(MqttServerConfigurationBuilder builder, IIpcSerializer serializer, IIpcPacketRouter router, IIpcPacketHandlersContainer packetHandlersContainer) : this(builder.Build(),
                                                                                                                                                                              serializer, router, packetHandlersContainer)
 {
 }