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