2026-01-26 18:56:53 +09:00

74 lines
2.9 KiB
C#

/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using System;
using System.Collections.Generic;
namespace VisionCommon {
public class ItemManagerBase {
private static readonly object _Lock = new object();
private static Dictionary<SubSysInfo, Dictionary<object, string>> _TimeStamps = new Dictionary<SubSysInfo, Dictionary<object, string>>();
private static Dictionary<AlignInfo, Dictionary<object, string>> _AlignTimeStamps = new Dictionary<AlignInfo, Dictionary<object, string>>();
/// <summary>
/// 특정 서브시스템에 대한 동기화된 공정 결과 시간을 저장
/// </summary>
/// <param name="subSysInfo">서브시스템 정보</param>
/// <param name="procResult">공정 결과</param>
/// <returns></returns>
public static string GetTimeStamp(SubSysInfo subSysInfo, object procResult) {
lock (_Lock) {
if (!_TimeStamps.ContainsKey(subSysInfo)) {
_TimeStamps.Add(subSysInfo, new Dictionary<object, string>());
}
if (!_TimeStamps[subSysInfo].ContainsKey(procResult)) {
_TimeStamps[subSysInfo][procResult] = DateTime.Now.ToString("HH:mm:ss:ff");
}
return _TimeStamps[subSysInfo][procResult];
}
}
/// <summary>
/// 특정 서브시스템에 대한 공정 결과 시간 초기화
/// </summary>
/// <param name="subSysInfo">서브시스템 정보</param>
public static void Clear(SubSysInfo subSysInfo) {
if (_TimeStamps.ContainsKey(subSysInfo)) {
_TimeStamps[subSysInfo].Clear();
}
}
/// <summary>
/// 특정 얼라인에 대한 동기화된 공정 결과 시간을 저장
/// </summary>
/// <param name="alignInfo">얼라인 정보</param>
/// <param name="procResult">공정 결과</param>
/// <returns></returns>
public static string GetTimeStamp(AlignInfo alignInfo, object procResult) {
lock (_Lock) {
if (!_AlignTimeStamps.ContainsKey(alignInfo)) {
_AlignTimeStamps.Add(alignInfo, new Dictionary<object, string>());
}
if (!_AlignTimeStamps[alignInfo].ContainsKey(procResult)) {
_AlignTimeStamps[alignInfo][procResult] = DateTime.Now.ToString("HH:mm:ss:ff");
}
return _AlignTimeStamps[alignInfo][procResult];
}
}
/// <summary>
/// 특정 얼라인에 대한 공정 결과 시간 초기화
/// </summary>
/// <param name="alignInfo">얼라인 정보</param>
public static void Clear(AlignInfo alignInfo) {
if (_AlignTimeStamps.ContainsKey(alignInfo)) {
_AlignTimeStamps[alignInfo].Clear();
}
}
}
}