diff --git a/Assets/Scripts/Studio/Connect/TemporaryMQTTClient.cs b/Assets/Scripts/Studio/Connect/TemporaryMQTTClient.cs index 37fbeb34..8610240c 100644 --- a/Assets/Scripts/Studio/Connect/TemporaryMQTTClient.cs +++ b/Assets/Scripts/Studio/Connect/TemporaryMQTTClient.cs @@ -15,13 +15,15 @@ namespace Studio.Connection string domain; int port; List topics; - Action callback; - public TemporaryMQTTClient(string domain, int port, List topic, Action callback) + Action topicCallback; + Action disconnectCallback; + public TemporaryMQTTClient(string domain, int port, List topic, Action topicCallback, Action disconnectCallback) { this.domain = domain; this.port = port; this.topics = topic; - this.callback = callback; + this.topicCallback = topicCallback; + this.disconnectCallback = disconnectCallback; var optionBuilder = new ConnectionOptionsBuilder() .WithTCP(domain, port) .Build(); @@ -44,7 +46,7 @@ namespace Studio.Connection { string payload = Encoding.UTF8.GetString(message.Payload.Data, message.Payload.Offset, message.Payload.Count); Debug.Log($"Temporary MQTT is OnTopic. {ToString()}, msg={payload}"); - callback(topicName, payload); + topicCallback(topicName, payload); this.topics.Remove(topicName); client.CreateUnsubscribePacketBuilder(topicName) @@ -66,12 +68,14 @@ namespace Studio.Connection private void OnErrorMQTT(MQTTClient client, string error) { + disconnectCallback(); Debug.Log($"Temporary MQTT Client Error. {ToString()}, error={error}"); //Disconnect(); } private void OnDisconnectedMQTT(MQTTClient client, DisconnectReasonCodes reasonCode, string reasonMessage) { + disconnectCallback(); Debug.Log($"Temporary MQTT Client Disconnected. {ToString()}, reason={reasonCode}, msg={reasonMessage}"); } diff --git a/Assets/Scripts/Studio/UI/Elements/UI_MQTTConnection.cs b/Assets/Scripts/Studio/UI/Elements/UI_MQTTConnection.cs index be43354d..0d281c18 100644 --- a/Assets/Scripts/Studio/UI/Elements/UI_MQTTConnection.cs +++ b/Assets/Scripts/Studio/UI/Elements/UI_MQTTConnection.cs @@ -21,6 +21,8 @@ namespace Studio.UI private Button Button_Remove; private RectTransform TopicItemContent; private RectTransform AddTopic; + private Image Image_Check; + private Sprite connectedSprite, errorSprite; private UI_InputTopicItem prf_InputTopicItem; private List inputTopicItems = new List(); @@ -63,7 +65,7 @@ namespace Studio.UI var topic = item.InputField_Topic.text; topics.Add(topic); } - var tmpClient = new TemporaryMQTTClient(domain, port, topics, OnTopicTest); + var tmpClient = new TemporaryMQTTClient(domain, port, topics, OnTopicTest, OnDisconnectClient); panel_MQTTTestResult.Open(domain, port.ToString()); } @@ -77,8 +79,12 @@ namespace Studio.UI payload = payload }; panel_MQTTTestResult.AddResult(result); + Image_Check.sprite = connectedSprite; + } + void OnDisconnectClient() + { + Image_Check.sprite = errorSprite; } - private void OnClickRemoveItemButton() { onRemoveMQTTConnectionItem?.Invoke(this);