코드 개선
This commit is contained in:
@@ -243,7 +243,9 @@ namespace UVC.Data.Mqtt
|
||||
firstMessageReceived[topic] = true; // 첫 번째 메시지를 수신했음을 기록합니다.
|
||||
isFirstMessage = true; // 첫 번째 메시지로 처리합니다.
|
||||
}
|
||||
|
||||
|
||||
|
||||
IDataObject? mappedObject = null;
|
||||
message = message.Trim();
|
||||
LastMessage = message; // 마지막 메시지를 저장하여 나중에 사용할 수 있습니다.
|
||||
@@ -263,15 +265,8 @@ namespace UVC.Data.Mqtt
|
||||
if (mappedObject == null) return;
|
||||
|
||||
//즉시 업데이트 여부를 설정합니다.
|
||||
if (mappedObject is DataObject dataObj)
|
||||
{
|
||||
dataObj.IsUpdateImmediately = isFirstMessage;
|
||||
}
|
||||
else if (mappedObject is DataArray dataArray)
|
||||
{
|
||||
dataArray.IsUpdateImmediately = isFirstMessage;
|
||||
}
|
||||
|
||||
mappedObject.IsUpdateImmediately = isFirstMessage;
|
||||
|
||||
// DataRepository는 내부적으로 데이터를 복사/업데이트하므로, mappedObject는 여기서 임시 객체가 됩니다.
|
||||
var repoObject = DataRepository.Instance.AddOrUpdateData(topic, mappedObject, config.UpdatedDataOnly);
|
||||
if (repoObject == mappedObject) repoObject = mappedObject.Clone(fromPool: false);
|
||||
@@ -280,6 +275,7 @@ namespace UVC.Data.Mqtt
|
||||
if (shouldInvoke && config.Handler != null)
|
||||
{
|
||||
var handlerData = repoObject;
|
||||
handlerData.IsUpdateImmediately = isFirstMessage; // 첫 번째 메시지 여부를 핸들러 데이터에 설정합니다.
|
||||
// 핸들러를 메인 스레드에서 안전하게 호출
|
||||
UniTask.Post(() => config.Handler?.Invoke(handlerData));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user