private ITicketThread GetOrCreateTicketThread(string serial, CommandDeviceType commandDeviceType, out bool wasCreated) { var result = GetTicketThread(serial); if (result != null) { wasCreated = false; return(result); } Console.WriteLine("Criando nova thread"); switch (commandDeviceType) { case CommandDeviceType.Smc: var smc = _smcService.GetBySerial(serial); result = new SmcTicketThread(smc, _baseClientSettings, _brokerSettings, _mqttClientConfiguration, _mqttClientMethods, _subscribeTopic, _commandRules, _eventService, _forwarderSenderService); TicketThreads.Add(result); break; case CommandDeviceType.Meter: var meter = _meterService.GetBySerial(serial); result = new MeterTicketThread(meter, _baseClientSettings, _brokerSettings, _mqttClientConfiguration, _mqttClientMethods, _subscribeTopic, _commandRules, _eventService, _forwarderSenderService); TicketThreads.Add(result); break; default: throw new NotImplementedException(); } wasCreated = true; return(result); }
public void AddTicketToThread(TicketDto ticketDto, ForwarderMessage[] forwarderMessage, PriorityValue priorityValue, CommandDeviceType commandDeviceType) { var thread = GetOrCreateTicketThread(ticketDto.Serial, commandDeviceType, out var wasCreated); thread.AddTicket(ticketDto, priorityValue, forwarderMessage); if (wasCreated) { new Thread(() => thread.Run()).Start(); } }
private string AddDeviceToTopicList(string serial, CommandDeviceType commandDeviceType) { var topic = _mqttConfiguration.BaseCommandsSubscribeTopic.Address .Replace("{smc-or-meter}", commandDeviceType.ToString().ToLower()) .Replace("{serial}", serial); var deviceTopic = new CommandDeviceTopic() { DeviceSerial = serial, DeviceTopic = topic }; _commandDeviceTopics.Add(deviceTopic); return(topic); }
public void AddTicketToThread(TicketDto ticketDto, ForwarderMessage forwarderMessage, PriorityValue priorityValue, CommandDeviceType commandDeviceType) { AddTicketToThread(ticketDto, new [] { forwarderMessage }, priorityValue, commandDeviceType); }