49 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|
|
} |