diff --git a/Assets/Scripts/Studio/Connect/StudioService.cs b/Assets/Scripts/Studio/Connect/StudioService.cs index d806c2b5..a4bc94ad 100644 --- a/Assets/Scripts/Studio/Connect/StudioService.cs +++ b/Assets/Scripts/Studio/Connect/StudioService.cs @@ -4,6 +4,8 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; +using Studio; +using Studio.Core; namespace Studio { @@ -19,16 +21,21 @@ namespace Studio } } - public class StudioService + public class StudioService : UnitySingleton { #region Singleton - private static readonly StudioService instance = new StudioService(new StudioRepoistory()); - public static StudioService Instance => instance; - static StudioService() { } + #endregion private Dictionary>> listenerIdMap; private StudioRepoistory repository; + public bool isConnected + { + get + { + return repository.isConnected; + } + } private Dictionary updateTime = new(); private int totalRequestPacket; private int totalResponsePacket; @@ -43,11 +50,14 @@ namespace Studio public Dictionary> apiData = new(); public Dictionary>, TimeSpan)> mqttData = new(); + private Dictionary lastUpdateTime = new(); public event Action> onAPIDataLoaded; public event Action>, TimeSpan> onMQTTDataLoaded; + bool isMQTTConnected; + //private string private StudioService(StudioRepoistory repository) { @@ -59,7 +69,15 @@ namespace Studio } public void ConnectMQTT() { + if (isMQTTConnected) + return; + + this.repository = new StudioRepoistory(); + listenerIdMap = new Dictionary>>(); + + repository.OnTopicList += OnTopicList; repository.MQTTConnect(); + isMQTTConnected = true; } public void SubscribeMQTT(string topic) @@ -90,6 +108,15 @@ namespace Studio UpdateTopicData(type, idKey.Key, idKey.Value); } + if (!mqttData.ContainsKey(type)) + { + mqttData.Add(type, (entities, elapsedTime)); + } + else + { + mqttData[type] = (entities, elapsedTime); + } + onMQTTDataLoaded?.Invoke(type, entities, elapsedTime); // 나중에 클래스 밖으로 이동 필요 } diff --git a/Assets/Scripts/Studio/UI/Elements/UI_APIConnection.cs b/Assets/Scripts/Studio/UI/Elements/UI_APIConnection.cs index 49bf013a..4a9e9d66 100644 --- a/Assets/Scripts/Studio/UI/Elements/UI_APIConnection.cs +++ b/Assets/Scripts/Studio/UI/Elements/UI_APIConnection.cs @@ -59,10 +59,10 @@ namespace Studio foreach (UI_InputURLItem item in inputURLItems) { string url = "/api/" + item.InputField_URL.text; - await StudioService.Instance.LoadBaseData(url); + await StudioService.instance.LoadBaseData(url); - panel_DataRepository = FindAnyObjectByType(FindObjectsInactive.Include); - panel_DataRepository.apiConnected = true; + //panel_DataRepository = FindAnyObjectByType(FindObjectsInactive.Include); + //panel_DataRepository.apiConnected = true; } } private void OnClickRemoveItemButton() diff --git a/Assets/Scripts/Studio/UI/Elements/UI_MQTTConnection.cs b/Assets/Scripts/Studio/UI/Elements/UI_MQTTConnection.cs index 54aa5c3c..3d8da205 100644 --- a/Assets/Scripts/Studio/UI/Elements/UI_MQTTConnection.cs +++ b/Assets/Scripts/Studio/UI/Elements/UI_MQTTConnection.cs @@ -55,10 +55,10 @@ namespace Studio foreach (UI_InputTopicItem item in inputTopicItems) { - StudioService.Instance.SubscribeMQTT(item.InputField_Topic.text); + StudioService.instance.SubscribeMQTT(item.InputField_Topic.text); - panel_DataRepository = FindAnyObjectByType(FindObjectsInactive.Include); - panel_DataRepository.mqttConnected = true; + //panel_DataRepository = FindAnyObjectByType(FindObjectsInactive.Include); + //panel_DataRepository.mqttConnected = true; } } private void OnClickRemoveItemButton() diff --git a/Assets/TMPFolder/Panel_DataRepository.cs b/Assets/TMPFolder/Panel_DataRepository.cs index d3e36cc8..7fcc85e4 100644 --- a/Assets/TMPFolder/Panel_DataRepository.cs +++ b/Assets/TMPFolder/Panel_DataRepository.cs @@ -42,8 +42,8 @@ namespace Studio Dictionary apiButtons = new(); Dictionary mqttButtons = new(); - public bool apiConnected; - public bool mqttConnected; + //public bool apiConnected; + //public bool mqttConnected; public override void AfterAwake() { @@ -64,12 +64,13 @@ namespace Studio private void OnEnable() { gameObject.transform.SetAsLastSibling(); - - StudioService studioService = StudioService.Instance; + + StudioService studioService = StudioService.instance; studioService.onAPIDataLoaded += UpdateAPIDataButton; studioService.onMQTTDataLoaded += UpdateMQTTDataButton; + /* foreach (string key in studioService.apiData.Keys) { UpdateAPIDataButton(key, studioService.apiData[key]); @@ -79,6 +80,7 @@ namespace Studio { UpdateMQTTDataButton(key, studioService.mqttData[key].Item1, studioService.mqttData[key].Item2); } + */ /* if (apiConnected) { @@ -159,7 +161,7 @@ namespace Studio public void ShowInformation_API() { - APITotalBoardEntity info = StudioService.Instance.GetAPIStatusBoarder(); + APITotalBoardEntity info = StudioService.instance.GetAPIStatusBoarder(); TotalRequestPacketSize.text = info.TotalRequestPacketSize.ToString(); AverageRequestPacketSize.text = info.AverageRequestPacketSize.ToString(); diff --git a/Assets/TMPFolder/RJHTest.cs b/Assets/TMPFolder/RJHTest.cs index 97e73f0e..123c87ab 100644 --- a/Assets/TMPFolder/RJHTest.cs +++ b/Assets/TMPFolder/RJHTest.cs @@ -16,14 +16,14 @@ namespace Studio Constants.APIDomain = "220.90.135.190"; Constants.APIPort = 23000; Constants.MQTTPort = 8088; - StudioService.Instance.ConnectMQTT(); + StudioService.instance.ConnectMQTT(); } private async void Test() { await AuthService.Instance.Login("xr", "@dbqlTl1"); - await StudioService.Instance.LoadBaseData("/api/agv"); + await StudioService.instance.LoadBaseData("/api/agv"); Debug.Log(AuthService.Instance.Entiti.accessToken); } private void Update() @@ -34,12 +34,12 @@ namespace Studio } if (Input.GetKeyDown(KeyCode.I)) { - StudioService.Instance.SubscribeMQTT("STOCKER_CRANE"); + StudioService.instance.SubscribeMQTT("STOCKER_CRANE"); } if(Input.GetKeyDown(KeyCode.U)) { - StudioService.Instance.SubscribeMQTT("AGV"); + StudioService.instance.SubscribeMQTT("AGV"); } if(Input.GetKeyDown(KeyCode.T)) { diff --git a/Assets/TMPFolder/UILinkedList.cs b/Assets/TMPFolder/UILinkedList.cs index 22f16d2c..56196e98 100644 --- a/Assets/TMPFolder/UILinkedList.cs +++ b/Assets/TMPFolder/UILinkedList.cs @@ -26,7 +26,7 @@ namespace Studio private void SetItem() { var apiItem = CreateAccordion(); - var basedatas = StudioService.Instance.apiData; + var basedatas = StudioService.instance.apiData; foreach(var data in basedatas) { CreateTabButton(data.Key, apiItem.BarList);