public SmcTicketThread(SmcDto smcDto, ClientSettings clientSettings, BrokerSettings brokerSettings, IMqttClientConfiguration mqttClientConfiguration, IMqttClientMethods mqttClientMethods, Topic topic, CommandRules commandRules, IEventService eventService, IForwarderSenderService forwarderSenderService) { Smc = smcDto; _eventService = eventService; _forwarderSenderService = forwarderSenderService; Tickets = new ConcurrentPriorityQueue <TicketThreadObject>(); _executingCommandSemaphore = new SemaphoreSlim(1, 1); _waitingCommandMessageSemaphore = new SemaphoreSlim(1, 1); _answerSemaphore = new SemaphoreSlim(1, 1); var localClientSettings = new ClientSettings { ClientId = clientSettings.ClientId, ClientName = clientSettings.ClientName }; localClientSettings.ClientId = localClientSettings.ClientId.Replace("serial", smcDto.Serial); localClientSettings.ClientName = localClientSettings.ClientName.Replace("serial", smcDto.Serial); localClientSettings.DebugMode = clientSettings.DebugMode; localClientSettings.AutoReconnectDelayInSeconds = clientSettings.AutoReconnectDelayInSeconds; var localTopic = new Topic { Address = topic.Address, QoS = topic.QoS }; localTopic.Address = localTopic.Address .Replace("{smc-or-meter}", CommandDeviceType.Smc.ToString().ToLower()) .Replace("{serial}", smcDto.Serial); _mqttClient = new IoGMqttClient(localClientSettings, brokerSettings, mqttClientConfiguration, mqttClientMethods); _mqttClient.Subscribe(localTopic); _mqttClient.MessageReceivedHandler += ReceivedUpdate; _commandRules = commandRules; }
public IogServicesMqttCommandsReceiverHostedService(IOptions <Forwarder> mqttConfiguration, IServiceProvider serviceProvider, IMqttClientMethods mqttClientMethods, IMqttClientConfiguration mqttClientConfiguration, IEventService eventService) { _mqttConfiguration = mqttConfiguration.Value.Mqtt; _serviceProvider = serviceProvider; _mqttClientConfiguration = mqttClientConfiguration; _mqttClientMethods = mqttClientMethods; _eventService = eventService; }
public IogServicesMqttMessagesReceiverTask(IOptionsMonitor <Forwarder> forwarderConfig, IMqttClientMethods mqttClientMethods, IMqttClientConfiguration mqttClientConfiguration, IServiceProvider services) { var client = forwarderConfig.CurrentValue.Mqtt.HostedServiceClientSettings; var broker = forwarderConfig.CurrentValue.Mqtt.BrokerSettings; _ioGMqttClient = new IoGMqttClient(client, broker, mqttClientConfiguration, mqttClientMethods); _topicToSubscribe = forwarderConfig.CurrentValue.Mqtt.HostedServiceSubscribeTopic; Services = services; }
public ThreadService(IMqttClientMethods mqttClientMethods, IMqttClientConfiguration mqttClientConfiguration, IOptions <Forwarder> forwarderConfig, IServiceProvider serviceProvider, ISmcService smcService, IOptions <CommandRules> commandRules, IEventService eventService, IForwarderSenderService forwarderSenderService, IMeterService meterService) { _mqttClientConfiguration = mqttClientConfiguration; _mqttClientMethods = mqttClientMethods; _brokerSettings = forwarderConfig.Value.Mqtt.BrokerSettings; _baseClientSettings = forwarderConfig.Value.Mqtt.CommandsBaseClientSettings; _subscribeTopic = forwarderConfig.Value.Mqtt.BaseCommandsSubscribeTopic; _smcService = smcService; _commandRules = commandRules.Value; _eventService = eventService; _eventService.AThreadIsShuttingDown += AThreadIsShuttingDown; _forwarderSenderService = forwarderSenderService; _meterService = meterService; }
public CommandThread(MeterDto meterDto, ClientSettings clientSettings, BrokerSettings brokerSettings, IMqttClientConfiguration mqttClientConfiguration, IMqttClientMethods mqttClientMethods, Topic topic, IServiceProvider serviceProvider, CommandRules commandRules) { MeterDto = meterDto; _mutex = new Semaphore(0, 10000); _answeredSemaphore = new Semaphore(1, 1); _commandQueue = new ConcurrentQueue <Command>(); _serviceProvider = serviceProvider; _commandRules = commandRules; clientSettings.ClientId = clientSettings.ClientId.Replace("serial", meterDto.Serial); clientSettings.ClientName = clientSettings.ClientName.Replace("serial", meterDto.Serial); topic.Address = topic.Address.Replace("{smc-or-meter}", "meter").Replace("{serial}", meterDto.Serial); _mqttClient = new IoGMqttClient(clientSettings, brokerSettings, mqttClientConfiguration, mqttClientMethods); _mqttClient.Subscribe(topic); _mqttClient.MessageReceivedHandler += ReceivedCommandAnswer; }