ObjectManager.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 # -*- coding: euc-jp -*-
3 
4 
16 
17 
18 import sys
19 import string
20 import threading
21 
22 import OpenRTM_aist
23 
24 
25 
26 
39  """
40  """
41 
42 
55  def __init__(self, predicate):
56  self._objects = self.Objects()
57  self._predicate = predicate
58 
59 
60 
61 
66  class Objects:
67  def __init__(self):
68  self._mutex = threading.RLock()
69  self._obj = []
70 
71 
72 
88  def registerObject(self, obj):
89  guard = OpenRTM_aist.ScopedLock(self._objects._mutex)
90  predi = self._predicate(factory=obj)
91 
92  for _obj in self._objects._obj:
93  if predi(_obj):
94  return False
95 
96  self._objects._obj.append(obj)
97  return True
98 
99 
100 
116  def unregisterObject(self, id):
117  guard = OpenRTM_aist.ScopedLock(self._objects._mutex)
118  predi = self._predicate(name=id)
119  i = 0
120  for _obj in self._objects._obj:
121  if predi(_obj):
122  ret = _obj
123  del self._objects._obj[i]
124  return ret
125  i+=1
126 
127  return None
128 
129 
130 
147  def find(self, id):
148  guard = OpenRTM_aist.ScopedLock(self._objects._mutex)
149  if isinstance(id,str):
150  predi = self._predicate(name=id)
151  else:
152  predi = self._predicate(prop=id)
153 
154  for _obj in self._objects._obj:
155  if predi(_obj):
156  return _obj
157 
158  return None
159 
160 
161 
175  def getObjects(self):
176  guard = OpenRTM_aist.ScopedLock(self._objects._mutex)
177  return self._objects._obj
178 
179 
180 
192  def for_each(self,p):
193  guard = OpenRTM_aist.ScopedLock(self._objects._mutex)
194  predi = p()
195 
196  for _obj in self._objects._obj:
197  predi(_obj)
198 
199  return predi
200 


openrtm_aist_python
Author(s): Shinji Kurihara
autogenerated on Mon Feb 28 2022 23:01:06