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}"); }
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 !"); }
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; }
public MqttIpcServer(MqttServerConfigurationBuilder builder, IIpcSerializer serializer, IIpcPacketRouter router, IIpcPacketHandlersContainer packetHandlersContainer) : this(builder.Build(), serializer, router, packetHandlersContainer) { }