67 lines
2.0 KiB
C#
67 lines
2.0 KiB
C#
/*
|
|
* Copyright (c) 2025 LG Electronics Inc.
|
|
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
|
|
*/
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace VisionCommon {
|
|
public static class PatternAgentManager {
|
|
private static object _lock = new object();
|
|
public static Dictionary<FovInfo, PatternAgentBase> _PatternAgents = new Dictionary<FovInfo, PatternAgentBase>();
|
|
|
|
public static void SetAgent(FovInfo fovInfo, PatternAgentBase patternAgent) {
|
|
lock (_lock) {
|
|
if (!_PatternAgents.ContainsKey(fovInfo)) {
|
|
_PatternAgents.Add(fovInfo, patternAgent);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static PatternAgentBase GetAgent(FovInfo fovInfo) {
|
|
lock (_lock) {
|
|
if (_PatternAgents.ContainsKey(fovInfo)) {
|
|
return _PatternAgents[fovInfo];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static Dictionary<FovInfo, PatternAgentBase> GetAgents() {
|
|
lock (_lock) {
|
|
return _PatternAgents;
|
|
}
|
|
}
|
|
|
|
public static void DeleteUnusedAgent(List<FovInfo> newFovInfos) {
|
|
lock (_lock) {
|
|
foreach (FovInfo oldFovInfo in _PatternAgents.Keys.ToList()) {
|
|
if (!newFovInfos.Contains(oldFovInfo)) {
|
|
if (_PatternAgents.ContainsKey(oldFovInfo)) {
|
|
_PatternAgents[oldFovInfo].Dispose();
|
|
_PatternAgents.Remove(oldFovInfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool IsNewSubSysInfo(FovInfo fovInfo) {
|
|
lock (_lock) {
|
|
if (!_PatternAgents.ContainsKey(fovInfo)) {
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void Clear() {
|
|
lock (_lock) {
|
|
_PatternAgents.Clear();
|
|
}
|
|
}
|
|
}
|
|
}
|