using Aurora.Api.Devices; using System.Collections.Generic; namespace VisionCommon { /// /// 모션의 포지션 매니저 /// /// public class PositionManager { private object _lock = new object(); private Dictionary _adapters = new Dictionary(); /// /// 포지션 어댑터를 등록한다. /// /// 키 정보 /// 포지션 어댑터 public void SetAdapter(T info, IPositionAdapter positionAdapter) { lock (_lock) { if (!_adapters.ContainsKey(info)) { _adapters.Add(info, positionAdapter); } } } /// /// 포지션 어댑터를 얻어온다. /// /// 키 정보 /// 포지션 어댑터 public IPositionAdapter GetAdapter(T info) { lock (_lock) { if (_adapters.ContainsKey(info)) { return _adapters[info]; } } return null; } /// /// 포지션을 얻어온다. /// /// 키 정보 /// 포지션 타입 /// 포지션 public Position GetPosition(T info, ePositionType positionType) { lock (_lock) { var posAdapter = GetAdapter(info); if (posAdapter == null) { return null; } return posAdapter.GetPosition(positionType); } } } }