63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace VisionCommon {
|
|
public static class FovPatternAgentManager {
|
|
private static object _lock = new object();
|
|
public static Dictionary<SubSysInfo, PatternAgentBase> _PatternAgents = new Dictionary<SubSysInfo, PatternAgentBase>();
|
|
|
|
public static void SetAgent(SubSysInfo subSysInfo, PatternAgentBase patternAgent) {
|
|
lock (_lock) {
|
|
if (!_PatternAgents.ContainsKey(subSysInfo)) {
|
|
_PatternAgents.Add(subSysInfo, patternAgent);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static PatternAgentBase GetAgent(SubSysInfo subSysInfo) {
|
|
lock (_lock) {
|
|
if (_PatternAgents.ContainsKey(subSysInfo)) {
|
|
return _PatternAgents[subSysInfo];
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public static Dictionary<SubSysInfo, PatternAgentBase> GetAgents() {
|
|
lock (_lock) {
|
|
return _PatternAgents;
|
|
}
|
|
}
|
|
|
|
public static void DeleteUnusedAgent(List<SubSysInfo> newSubSysInfos) {
|
|
lock (_lock) {
|
|
foreach (SubSysInfo oldSubSysInfo in _PatternAgents.Keys.ToList()) {
|
|
if (!newSubSysInfos.Contains(oldSubSysInfo)) {
|
|
if (_PatternAgents.ContainsKey(oldSubSysInfo)) {
|
|
_PatternAgents[oldSubSysInfo].Dispose();
|
|
_PatternAgents.Remove(oldSubSysInfo);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool IsNewSubSysInfo(SubSysInfo subSysInfo) {
|
|
lock (_lock) {
|
|
if (!_PatternAgents.ContainsKey(subSysInfo)) {
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void Clear() {
|
|
lock (_lock) {
|
|
_PatternAgents.Clear();
|
|
}
|
|
}
|
|
}
|
|
}
|