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

49 lines
1.9 KiB
C#

/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using System.Collections.Generic;
namespace VisionCommon {
/// <summary>
/// 장비에서 정의한 시퀀스 어댑터 매니저
/// </summary>
public class MachineSeqManager {
private object _lock = new object();
private Dictionary<SubSysInfo, SeqAdapter> _actionAdapters = new Dictionary<SubSysInfo, SeqAdapter>();
/// <summary>기본 생성자</summary>
public MachineSeqManager() {
}
/// <summary>
/// 서브 시스템의 시퀀스 어댑터를 등록한다.
/// </summary>
/// <param name="subSysInfo">서브 시스템 정보</param>
/// <param name="adapter">시퀀스 어댑터</param>
public void SetAdapter(SubSysInfo subSysInfo, SeqAdapter adapter) {
lock (_lock) {
if (!_actionAdapters.ContainsKey(subSysInfo)) {
_actionAdapters.Add(subSysInfo, adapter);
}
}
}
/// <summary>
/// 서브 시스템의 시퀀스 어댑터를 가져온다.
/// </summary>
/// <param name="subSysInfo">서브 시스템 정보</param>
/// <param name="defaultAdapter">가져올 때 default Adapter를 어떤 것을 가져올지 설정하는 정보
/// !주의! Node 형태로 사용할 때 : ( DefaultActionNode / DefaultDecisionNode 를 생성)
/// !주의! Method 형태로 사용할 때 : null을 사용한다면 ".GetAdapter(~)?.Invoke(~)" 형태로 사용</param>
/// <returns>시퀀스 어댑터</returns>
public SeqAdapter GetAdapter(SubSysInfo subSysInfo, SeqAdapter defaultAdapter = null) {
lock (_lock) {
if (_actionAdapters.ContainsKey(subSysInfo)) {
return _actionAdapters[subSysInfo];
}
}
return defaultAdapter;
}
}
}