저장
This commit is contained in:
@@ -4,6 +4,8 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using Studio;
|
||||||
|
using Studio.Core;
|
||||||
|
|
||||||
namespace Studio
|
namespace Studio
|
||||||
{
|
{
|
||||||
@@ -19,16 +21,21 @@ namespace Studio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class StudioService
|
public class StudioService : UnitySingleton<StudioService>
|
||||||
{
|
{
|
||||||
#region Singleton
|
#region Singleton
|
||||||
private static readonly StudioService instance = new StudioService(new StudioRepoistory());
|
|
||||||
public static StudioService Instance => instance;
|
|
||||||
static StudioService() { }
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private Dictionary<string, Dictionary<string, EventHandler<StudioServiceTypeEventArgs>>> listenerIdMap;
|
private Dictionary<string, Dictionary<string, EventHandler<StudioServiceTypeEventArgs>>> listenerIdMap;
|
||||||
private StudioRepoistory repository;
|
private StudioRepoistory repository;
|
||||||
|
public bool isConnected
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return repository.isConnected;
|
||||||
|
}
|
||||||
|
}
|
||||||
private Dictionary<string, float> updateTime = new();
|
private Dictionary<string, float> updateTime = new();
|
||||||
private int totalRequestPacket;
|
private int totalRequestPacket;
|
||||||
private int totalResponsePacket;
|
private int totalResponsePacket;
|
||||||
@@ -43,11 +50,14 @@ namespace Studio
|
|||||||
|
|
||||||
public Dictionary<string, StudioEntityWithState<object>> apiData = new();
|
public Dictionary<string, StudioEntityWithState<object>> apiData = new();
|
||||||
public Dictionary<string, (Dictionary<string, Dictionary<string, string>>, TimeSpan)> mqttData = new();
|
public Dictionary<string, (Dictionary<string, Dictionary<string, string>>, TimeSpan)> mqttData = new();
|
||||||
|
|
||||||
private Dictionary<string, DateTime> lastUpdateTime = new();
|
private Dictionary<string, DateTime> lastUpdateTime = new();
|
||||||
|
|
||||||
public event Action<string, StudioEntityWithState<object>> onAPIDataLoaded;
|
public event Action<string, StudioEntityWithState<object>> onAPIDataLoaded;
|
||||||
public event Action<string, Dictionary<string, Dictionary<string, string>>, TimeSpan> onMQTTDataLoaded;
|
public event Action<string, Dictionary<string, Dictionary<string, string>>, TimeSpan> onMQTTDataLoaded;
|
||||||
|
|
||||||
|
bool isMQTTConnected;
|
||||||
|
|
||||||
//private string
|
//private string
|
||||||
private StudioService(StudioRepoistory repository)
|
private StudioService(StudioRepoistory repository)
|
||||||
{
|
{
|
||||||
@@ -59,7 +69,15 @@ namespace Studio
|
|||||||
}
|
}
|
||||||
public void ConnectMQTT()
|
public void ConnectMQTT()
|
||||||
{
|
{
|
||||||
|
if (isMQTTConnected)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this.repository = new StudioRepoistory();
|
||||||
|
listenerIdMap = new Dictionary<string, Dictionary<string, EventHandler<StudioServiceTypeEventArgs>>>();
|
||||||
|
|
||||||
|
repository.OnTopicList += OnTopicList;
|
||||||
repository.MQTTConnect();
|
repository.MQTTConnect();
|
||||||
|
isMQTTConnected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SubscribeMQTT(string topic)
|
public void SubscribeMQTT(string topic)
|
||||||
@@ -90,6 +108,15 @@ namespace Studio
|
|||||||
UpdateTopicData(type, idKey.Key, idKey.Value);
|
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); // 나중에 클래스 밖으로 이동 필요
|
onMQTTDataLoaded?.Invoke(type, entities, elapsedTime); // 나중에 클래스 밖으로 이동 필요
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,10 +59,10 @@ namespace Studio
|
|||||||
foreach (UI_InputURLItem item in inputURLItems)
|
foreach (UI_InputURLItem item in inputURLItems)
|
||||||
{
|
{
|
||||||
string url = "/api/" + item.InputField_URL.text;
|
string url = "/api/" + item.InputField_URL.text;
|
||||||
await StudioService.Instance.LoadBaseData(url);
|
await StudioService.instance.LoadBaseData(url);
|
||||||
|
|
||||||
panel_DataRepository = FindAnyObjectByType<Panel_DataRepository>(FindObjectsInactive.Include);
|
//panel_DataRepository = FindAnyObjectByType<Panel_DataRepository>(FindObjectsInactive.Include);
|
||||||
panel_DataRepository.apiConnected = true;
|
//panel_DataRepository.apiConnected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void OnClickRemoveItemButton()
|
private void OnClickRemoveItemButton()
|
||||||
|
|||||||
@@ -55,10 +55,10 @@ namespace Studio
|
|||||||
|
|
||||||
foreach (UI_InputTopicItem item in inputTopicItems)
|
foreach (UI_InputTopicItem item in inputTopicItems)
|
||||||
{
|
{
|
||||||
StudioService.Instance.SubscribeMQTT(item.InputField_Topic.text);
|
StudioService.instance.SubscribeMQTT(item.InputField_Topic.text);
|
||||||
|
|
||||||
panel_DataRepository = FindAnyObjectByType<Panel_DataRepository>(FindObjectsInactive.Include);
|
//panel_DataRepository = FindAnyObjectByType<Panel_DataRepository>(FindObjectsInactive.Include);
|
||||||
panel_DataRepository.mqttConnected = true;
|
//panel_DataRepository.mqttConnected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void OnClickRemoveItemButton()
|
private void OnClickRemoveItemButton()
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ namespace Studio
|
|||||||
Dictionary<string, UI_BaseDataButton> apiButtons = new();
|
Dictionary<string, UI_BaseDataButton> apiButtons = new();
|
||||||
Dictionary<string, UI_MQTTDataButton> mqttButtons = new();
|
Dictionary<string, UI_MQTTDataButton> mqttButtons = new();
|
||||||
|
|
||||||
public bool apiConnected;
|
//public bool apiConnected;
|
||||||
public bool mqttConnected;
|
//public bool mqttConnected;
|
||||||
|
|
||||||
public override void AfterAwake()
|
public override void AfterAwake()
|
||||||
{
|
{
|
||||||
@@ -65,11 +65,12 @@ namespace Studio
|
|||||||
{
|
{
|
||||||
gameObject.transform.SetAsLastSibling();
|
gameObject.transform.SetAsLastSibling();
|
||||||
|
|
||||||
StudioService studioService = StudioService.Instance;
|
StudioService studioService = StudioService.instance;
|
||||||
|
|
||||||
studioService.onAPIDataLoaded += UpdateAPIDataButton;
|
studioService.onAPIDataLoaded += UpdateAPIDataButton;
|
||||||
studioService.onMQTTDataLoaded += UpdateMQTTDataButton;
|
studioService.onMQTTDataLoaded += UpdateMQTTDataButton;
|
||||||
|
|
||||||
|
/*
|
||||||
foreach (string key in studioService.apiData.Keys)
|
foreach (string key in studioService.apiData.Keys)
|
||||||
{
|
{
|
||||||
UpdateAPIDataButton(key, studioService.apiData[key]);
|
UpdateAPIDataButton(key, studioService.apiData[key]);
|
||||||
@@ -79,6 +80,7 @@ namespace Studio
|
|||||||
{
|
{
|
||||||
UpdateMQTTDataButton(key, studioService.mqttData[key].Item1, studioService.mqttData[key].Item2);
|
UpdateMQTTDataButton(key, studioService.mqttData[key].Item1, studioService.mqttData[key].Item2);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
if (apiConnected)
|
if (apiConnected)
|
||||||
{
|
{
|
||||||
@@ -159,7 +161,7 @@ namespace Studio
|
|||||||
|
|
||||||
public void ShowInformation_API()
|
public void ShowInformation_API()
|
||||||
{
|
{
|
||||||
APITotalBoardEntity info = StudioService.Instance.GetAPIStatusBoarder();
|
APITotalBoardEntity info = StudioService.instance.GetAPIStatusBoarder();
|
||||||
|
|
||||||
TotalRequestPacketSize.text = info.TotalRequestPacketSize.ToString();
|
TotalRequestPacketSize.text = info.TotalRequestPacketSize.ToString();
|
||||||
AverageRequestPacketSize.text = info.AverageRequestPacketSize.ToString();
|
AverageRequestPacketSize.text = info.AverageRequestPacketSize.ToString();
|
||||||
|
|||||||
@@ -16,14 +16,14 @@ namespace Studio
|
|||||||
Constants.APIDomain = "220.90.135.190";
|
Constants.APIDomain = "220.90.135.190";
|
||||||
Constants.APIPort = 23000;
|
Constants.APIPort = 23000;
|
||||||
Constants.MQTTPort = 8088;
|
Constants.MQTTPort = 8088;
|
||||||
StudioService.Instance.ConnectMQTT();
|
StudioService.instance.ConnectMQTT();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Test()
|
private async void Test()
|
||||||
{
|
{
|
||||||
await AuthService.Instance.Login("xr", "@dbqlTl1");
|
await AuthService.Instance.Login("xr", "@dbqlTl1");
|
||||||
|
|
||||||
await StudioService.Instance.LoadBaseData("/api/agv");
|
await StudioService.instance.LoadBaseData("/api/agv");
|
||||||
Debug.Log(AuthService.Instance.Entiti.accessToken);
|
Debug.Log(AuthService.Instance.Entiti.accessToken);
|
||||||
}
|
}
|
||||||
private void Update()
|
private void Update()
|
||||||
@@ -34,12 +34,12 @@ namespace Studio
|
|||||||
}
|
}
|
||||||
if (Input.GetKeyDown(KeyCode.I))
|
if (Input.GetKeyDown(KeyCode.I))
|
||||||
{
|
{
|
||||||
StudioService.Instance.SubscribeMQTT("STOCKER_CRANE");
|
StudioService.instance.SubscribeMQTT("STOCKER_CRANE");
|
||||||
|
|
||||||
}
|
}
|
||||||
if(Input.GetKeyDown(KeyCode.U))
|
if(Input.GetKeyDown(KeyCode.U))
|
||||||
{
|
{
|
||||||
StudioService.Instance.SubscribeMQTT("AGV");
|
StudioService.instance.SubscribeMQTT("AGV");
|
||||||
}
|
}
|
||||||
if(Input.GetKeyDown(KeyCode.T))
|
if(Input.GetKeyDown(KeyCode.T))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace Studio
|
|||||||
private void SetItem()
|
private void SetItem()
|
||||||
{
|
{
|
||||||
var apiItem = CreateAccordion();
|
var apiItem = CreateAccordion();
|
||||||
var basedatas = StudioService.Instance.apiData;
|
var basedatas = StudioService.instance.apiData;
|
||||||
foreach(var data in basedatas)
|
foreach(var data in basedatas)
|
||||||
{
|
{
|
||||||
CreateTabButton(data.Key, apiItem.BarList);
|
CreateTabButton(data.Key, apiItem.BarList);
|
||||||
|
|||||||
Reference in New Issue
Block a user