Files
Simulation/Assets/WorkSpace/LH/MQTTDataBase.cs
2025-05-29 11:36:41 +09:00

50 lines
1.7 KiB
C#

using UnityEngine;
using System.Collections.Generic;
using System.Collections.Concurrent;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class MQTTDataBase : MonoBehaviour
{
public static MQTTDataBase Instance;
public ConcurrentDictionary<string, ConcurrentQueue<Dictionary<string, object>>> mqttDataBase;
public ConcurrentDictionary<string, ConcurrentQueue<JObject>> mqttData = new ConcurrentDictionary<string, ConcurrentQueue<JObject>>();
private void Awake()
{
mqttDataBase = new ConcurrentDictionary<string, ConcurrentQueue<Dictionary<string, object>>>();
Instance = this;
}
public void AddDict(string key, string value)
{
Debug.Log("#### : " + key + " : " + value);
JObject json = JObject.Parse(value);
var queue = mqttData.GetOrAdd(key, _ => new ConcurrentQueue<JObject>());
queue.Enqueue(json);
//var dicts = JsonConvert.DeserializeObject<Dictionary<string, object>>(value);
//
//// 해당 key가 없으면 새 큐를 생성하고, 이미 있으면 기존 큐를 반환
//var queue = mqttDataBase.GetOrAdd(key, _ => new ConcurrentQueue<Dictionary<string, object>>());
//queue.Enqueue(dicts);
}
//public ConcurrentQueue<Dictionary<string, object>> GetDataQueue(string id)
//{
// if (mqttDataBase.TryGetValue(id, out ConcurrentQueue<Dictionary<string, object>> dataQueue))
// {
// return dataQueue;
// }
// return null;
//}
public ConcurrentQueue<JObject> GetDataQueue(string id)
{
if (mqttData.TryGetValue(id, out ConcurrentQueue<JObject> dataQueue))
{
return dataQueue;
}
return null;
}
}