/* * 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> _TimeStamps = new Dictionary>(); private static Dictionary> _AlignTimeStamps = new Dictionary>(); /// /// 특정 서브시스템에 대한 동기화된 공정 결과 시간을 저장 /// /// 서브시스템 정보 /// 공정 결과 /// public static string GetTimeStamp(SubSysInfo subSysInfo, object procResult) { lock (_Lock) { if (!_TimeStamps.ContainsKey(subSysInfo)) { _TimeStamps.Add(subSysInfo, new Dictionary()); } if (!_TimeStamps[subSysInfo].ContainsKey(procResult)) { _TimeStamps[subSysInfo][procResult] = DateTime.Now.ToString("HH:mm:ss:ff"); } return _TimeStamps[subSysInfo][procResult]; } } /// /// 특정 서브시스템에 대한 공정 결과 시간 초기화 /// /// 서브시스템 정보 public static void Clear(SubSysInfo subSysInfo) { if (_TimeStamps.ContainsKey(subSysInfo)) { _TimeStamps[subSysInfo].Clear(); } } /// /// 특정 얼라인에 대한 동기화된 공정 결과 시간을 저장 /// /// 얼라인 정보 /// 공정 결과 /// public static string GetTimeStamp(AlignInfo alignInfo, object procResult) { lock (_Lock) { if (!_AlignTimeStamps.ContainsKey(alignInfo)) { _AlignTimeStamps.Add(alignInfo, new Dictionary()); } if (!_AlignTimeStamps[alignInfo].ContainsKey(procResult)) { _AlignTimeStamps[alignInfo][procResult] = DateTime.Now.ToString("HH:mm:ss:ff"); } return _AlignTimeStamps[alignInfo][procResult]; } } /// /// 특정 얼라인에 대한 공정 결과 시간 초기화 /// /// 얼라인 정보 public static void Clear(AlignInfo alignInfo) { if (_AlignTimeStamps.ContainsKey(alignInfo)) { _AlignTimeStamps[alignInfo].Clear(); } } } }