Exemple #1
0
        public MQTTClientContext(ILogger <MQTTClientContext> logger,
                                 IMqttClientFacade mqttClientFacade,
                                 IEnumerable <IMeetingApplicationPoller> meetingApplicationPollers,
                                 ICommandTriager commandTriager)
        {
            _logger           = logger;
            _mqttClientFacade = mqttClientFacade;

            var contextMenu = new ContextMenuStrip();

            _trayIcon = new NotifyIcon()
            {
                ContextMenuStrip = contextMenu,
                Visible          = true,
                Text             = "MQTT Client",
                Icon             = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location)
            };

            // Add minimum required buttons
            AddConnectionStatus(_mqttClientFacade);
            AddExitButton();
            ShowLaunchBaloon();

            // Start MQTT client
            _mqttClientFacade.OnMessage(commandTriager.BaseTopic, commandTriager.OnReceive);
            _mqttClientFacade.Start();

            // Register all meeting pollers
            foreach (IMeetingApplicationPoller meetingApplicationPoller in meetingApplicationPollers)
            {
                AddMeetingStatus(meetingApplicationPoller);
                meetingApplicationPoller.StartPolling();
            }
        }
Exemple #2
0
        /// <summary>
        /// Adds connection status text
        /// </summary>
        /// <param name="mqttClientFacade"></param>
        private void AddConnectionStatus(IMqttClientFacade mqttClientFacade)
        {
            _logger.LogDebug("Adding MQTT connection status menu item");
            var statusItem = new ToolStripMenuItem();

            statusItem.Enabled = false;
            statusItem.Text    = "Unknown Status";
            statusItem.Name    = "connection_satus_item";

            mqttClientFacade.OnConnected(() => statusItem.Text    = $"Connected to {mqttClientFacade.ConnectionSettings.BrokerURL}");
            mqttClientFacade.OnDisconnected(() => statusItem.Text = $"Disconnected from {mqttClientFacade.ConnectionSettings.BrokerURL}");

            _trayIcon.ContextMenuStrip.Items.Add(statusItem);
        }