コード例 #1
0
ファイル: ThreadService.cs プロジェクト: dwenndson/TesteSMI
        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);
        }
コード例 #2
0
ファイル: ThreadService.cs プロジェクト: dwenndson/TesteSMI
        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);
        }
コード例 #4
0
ファイル: ThreadService.cs プロジェクト: dwenndson/TesteSMI
 public void AddTicketToThread(TicketDto ticketDto, ForwarderMessage forwarderMessage,
                               PriorityValue priorityValue, CommandDeviceType commandDeviceType)
 {
     AddTicketToThread(ticketDto, new [] { forwarderMessage }, priorityValue, commandDeviceType);
 }