/* * 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; } } }