50 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|