def __init__(self, orb, server_name=None, naming=None): self.orb = orb self.name = server_name if naming: self.naming = naming else: self.naming = CorbaNaming(self.orb, server_name) self.b_len = 10 # iteration cut off no. self.rtc_handles = {} self.obj_list = {}
def setUp(self): self.orb = OpenRTM_aist.Manager.instance().getORB() self.naming = CorbaNaming(self.orb, "localhost:2809") #self.naming.clearAll() self.name_list = [] self.name_list.append(CosNaming.NameComponent("Mon", "mon_cxt")) self.name_list.append(CosNaming.NameComponent("Tus", "tus_cxt")) self.name_list.append(CosNaming.NameComponent("Wed", "wed_cxt")) self.name_list.append(CosNaming.NameComponent("Thu", "thu_cxt")) self.name_list.append(CosNaming.NameComponent("Fri", "fri_cxt")) self.name_list.append(CosNaming.NameComponent("Sat", "sat_cxt")) self.name_list.append(CosNaming.NameComponent("Sun", "sun_cxt")) return
def __init__(self, orb=None, server_name='localhost'): if orb is None: self.orb = CORBA.ORB_init(sys.argv) else: self.orb=orb self.name=server_name self.naming=CorbaNaming(self.orb, self.name) self.maxlen=20 self.object_list={} self.current_ctx=""
def setUp(self): self.orb = OpenRTM_aist.Manager.instance().getORB() self.naming = CorbaNaming(self.orb, "localhost:2809") #self.naming.clearAll() self.name_list = [] self.name_list.append(CosNaming.NameComponent("Mon","mon_cxt")) self.name_list.append(CosNaming.NameComponent("Tus","tus_cxt")) self.name_list.append(CosNaming.NameComponent("Wed","wed_cxt")) self.name_list.append(CosNaming.NameComponent("Thu","thu_cxt")) self.name_list.append(CosNaming.NameComponent("Fri","fri_cxt")) self.name_list.append(CosNaming.NameComponent("Sat","sat_cxt")) self.name_list.append(CosNaming.NameComponent("Sun","sun_cxt")) return
def setUp(self): self.orb = CORBA.ORB_init() self.naming = CorbaNaming(self.orb, "localhost:2809") #self.naming.clearAll() self.name_list = [] self.name_list.append(CosNaming.NameComponent("Mon","mon_cxt")) self.name_list.append(CosNaming.NameComponent("Tus","tus_cxt")) self.name_list.append(CosNaming.NameComponent("Wed","wed_cxt")) self.name_list.append(CosNaming.NameComponent("Thu","thu_cxt")) self.name_list.append(CosNaming.NameComponent("Fri","fri_cxt")) self.name_list.append(CosNaming.NameComponent("Sat","sat_cxt")) self.name_list.append(CosNaming.NameComponent("Sun","sun_cxt")) return
class NameSpace : def __init__(self, orb, server_name=None, naming=None): self.orb = orb self.name = server_name if naming : self.naming = naming else : self.naming = CorbaNaming(self.orb, server_name) self.b_len = 10 # iteration cut off no. self.rtc_handles = {} self.obj_list = {} def get_object_by_name(self, name, cl=RTC.RTObject): ref = self.naming.resolveStr(name) if ref is None: return None # return CORBA.nil ? if cl : return ref._narrow(cl) else : return ref def list_obj(self) : self.rtc_handles = {} self.obj_list = {} return self.list_obj1(self.naming._rootContext, "") def list_obj1(self, name_context, parent) : if not name_context : name_context = self.naming._rootContext rslt = [] b_list = name_context.list(self.b_len) for bd in b_list[0] : rslt = rslt + self.proc_bd(bd, name_context, parent) if b_list[1] : # iterator : there exists remaining. t_list = b_list[1].next_n(self.b_len) while t_list[0] : for bd in t_list[1] : rslt = rslt + self.proc_bd(bd, name_context, parent) t_list = b_list[1].next_n(self.b_len) return rslt def proc_bd(self, bd, name_context, parent) : # print '-------------------------------------------------------------------' # print 'bd= ', bd # print 'name_context= ', name_context # print 'parent= ', parent rslt = [] pre = "" if parent : pre = parent + "/" nam = pre + URI.nameToString(bd.binding_name) if bd.binding_type == CosNaming.nobject : tmp = name_context.resolve(bd.binding_name) self.obj_list[nam]=tmp print 'objcet '+nam+' was listed.' try : tmp = tmp._narrow(RTC.RTObject) except : print nam+' is not RTC.' tmp = None try : if tmp : rslt = [[nam, tmp]] self.rtc_handles[nam]=RtcHandle(nam,self,tmp) print 'handle for '+nam+' was created.' else : pass except : print nam+' is not alive.' , sys.exc_info()[0] pass else : tmp = name_context.resolve(bd.binding_name) tmp = tmp._narrow(CosNaming.NamingContext) rslt = self.list_obj1(tmp, nam) return rslt
class NameSpace: def __init__(self, orb, server_name=None, naming=None): self.orb = orb self.name = server_name if naming: self.naming = naming else: self.naming = CorbaNaming(self.orb, server_name) self.b_len = 10 # iteration cut off no. self.rtc_handles = {} self.obj_list = {} def get_object_by_name(self, name, cl=RTC.RTObject): ref = self.naming.resolveStr(name) if ref is None: return None # return CORBA.nil ? if cl: return ref._narrow(cl) else: return ref def list_obj(self): self.rtc_handles = {} self.obj_list = {} return self.list_obj1(self.naming._rootContext, "") def list_obj1(self, name_context, parent): if not name_context: name_context = self.naming._rootContext rslt = [] b_list = name_context.list(self.b_len) for bd in b_list[0]: rslt = rslt + self.proc_bd(bd, name_context, parent) if b_list[1]: # iterator : there exists remaining. t_list = b_list[1].next_n(self.b_len) while t_list[0]: for bd in t_list[1]: rslt = rslt + self.proc_bd(bd, name_context, parent) t_list = b_list[1].next_n(self.b_len) return rslt def proc_bd(self, bd, name_context, parent): # print '-------------------------------------------------------------------' # print 'bd= ', bd # print 'name_context= ', name_context # print 'parent= ', parent rslt = [] pre = "" if parent: pre = parent + "/" nam = pre + URI.nameToString(bd.binding_name) if bd.binding_type == CosNaming.nobject: tmp = name_context.resolve(bd.binding_name) self.obj_list[nam] = tmp print('objcet ' + nam + ' was listed.') try: tmp = tmp._narrow(RTC.RTObject) except: print(nam + ' is not RTC.') tmp = None try: if tmp: rslt = [[nam, tmp]] self.rtc_handles[nam] = RtcHandle(nam, self, tmp) print('handle for ' + nam + ' was created.') else: pass except: print(nam + ' is not alive.', sys.exc_info()[0]) pass else: tmp = name_context.resolve(bd.binding_name) tmp = tmp._narrow(CosNaming.NamingContext) rslt = self.list_obj1(tmp, nam) return rslt
# # $Id: CreateDeleteRTCTest.py 1541 2009-08-31 07:21:12Z hakuta $ # from rtc_handle import * from BasicDataType_idl import * from CorbaNaming import * import time import commands import socket import RTM env = RtmEnv(sys.argv, ["localhost:9898"]) mgr_name=socket.gethostname()+".host_cxt/manager.mgr" naming = CorbaNaming(env.orb,"localhost:9898") manager = naming.resolve(mgr_name)._narrow(RTM.Manager) time.sleep(2) def mem_rss(): (stat, output) = commands.getstatusoutput("ps alxww | grep \"[r]\"tcd") return output.split()[7] ## file and console out def print_file_and_cons(out_data, out_flag=0): ## out_flag:1 is file out only if out_flag == 1: fout.write(out_data + '\n') fout.flush() ## out_flag:2 is console out only
class TestCorbaNaming(unittest.TestCase): def setUp(self): self.orb = OpenRTM_aist.Manager.instance().getORB() self.naming = CorbaNaming(self.orb, "localhost:2809") #self.naming.clearAll() self.name_list = [] self.name_list.append(CosNaming.NameComponent("Mon", "mon_cxt")) self.name_list.append(CosNaming.NameComponent("Tus", "tus_cxt")) self.name_list.append(CosNaming.NameComponent("Wed", "wed_cxt")) self.name_list.append(CosNaming.NameComponent("Thu", "thu_cxt")) self.name_list.append(CosNaming.NameComponent("Fri", "fri_cxt")) self.name_list.append(CosNaming.NameComponent("Sat", "sat_cxt")) self.name_list.append(CosNaming.NameComponent("Sun", "sun_cxt")) return def tearDown(self): OpenRTM_aist.Manager.instance().shutdownManager() del self return def test_init(self): try: self.naming.init("localhost") except: print "Exeption at naming init." def test_bind(self): self.naming.clearAll() self.bind_test_sequence(self.name_list) def bind_test_sequence(self, sname): obj = self.naming.newContext() self.naming.bind(sname, obj) # resolve test new_obj = self.naming.resolve(sname) self.assertEqual(obj._is_equivalent(new_obj), True, "Resolve failed.") return True def test_bindByString(self): name = "localhost.host_cxt\/Manager123456.mgr_cxt/MobileRobot.cat_cxt/Kani0.rtc" lname = [] lname.append( CosNaming.NameComponent("localhost.host_cxt\/Manager123456", "mgr_cxt")) lname.append(CosNaming.NameComponent("MobileRobot", "cat_cxt")) lname.append(CosNaming.NameComponent("Kani0", "rtc")) obj = self.naming.newContext() self.naming.bindByString(name, obj) new_obj = self.naming.resolve(name) self.assertEqual(obj._is_equivalent(new_obj), True, "Resolve failed.") new_obj = self.naming.resolve(lname) self.assertEqual(obj._is_equivalent(new_obj), True, "Resolve failed.") #def test_bindRecursive(self): # pass def test_rebind(self): obj = self.naming.newContext() self.naming.bind(self.name_list, obj) new_obj = self.naming.resolve(self.name_list) self.assertEqual(obj._is_equivalent(new_obj), True, "Resolve failed.") self.naming.rebind(self.name_list, obj) new_obj = self.naming.resolve(self.name_list) self.assertEqual(obj._is_equivalent(new_obj), True, "Resolve failed.") #def test_rebindByString(self): # pass def test_rebindRecursive(self): obj = self.naming.newContext() self.naming.bind(self.name_list, obj) new_obj = self.naming.resolve(self.name_list) self.assertEqual(obj._is_equivalent(new_obj), True, "Resolve failed.") self.naming.rebindRecursive(self.naming.getRootContext(), self.name_list, obj) new_obj = self.naming.resolve(self.name_list) self.assertEqual(obj._is_equivalent(new_obj), True, "Resolve failed.") def test_bindContext(self): obj = self.naming.newContext() name = [] name.append(CosNaming.NameComponent("bindcxt", "bindcxt_cxt")) self.naming.bindContext("bindcxt.bindcxt_cxt", obj) new_obj = self.naming.resolve(name) self.assertEqual(obj._is_equivalent(new_obj), True, "Resolve failed.") def test_unbind(self): obj = self.naming.newContext() self.naming.bind(self.name_list, obj) self.naming.unbind(self.name_list) def test_bindNewContext(self): name = [] name.append(CosNaming.NameComponent("newContext", "new_cxt")) self.naming.bindNewContext(name) new_obj = self.naming.resolve(name) def test_destroy(self): obj = self.naming.newContext() name = [] name.append(CosNaming.NameComponent("destroy", "destroy_cxt")) self.naming.bind(name, obj) self.naming.destroy(obj) def test_destroyRecursive(self): obj = self.naming.newContext() name = [] name.append(CosNaming.NameComponent("desRec0", "desRec0_cxt")) name.append(CosNaming.NameComponent("desRec1", "desRec1_cxt")) name.append(CosNaming.NameComponent("desRec2", "desRec2_cxt")) self.naming.bind(name, obj) self.naming.destroyRecursive(obj) def test_list(self): bl = [] bi = [] self.naming.list(self.naming.getRootContext(), 100, bl, bi) print bl[0][0].binding_name[0].id def test_toString(self): name = [] name.append(CosNaming.NameComponent("desRec0", "desRec0_cxt")) name.append(CosNaming.NameComponent("desRec1", "desRec1_cxt")) name.append(CosNaming.NameComponent("desRec2", "desRec2_cxt")) string_name = self.naming.toString(name) self.assertEqual( str("desRec0.desRec0_cxt/desRec1.desRec1_cxt/desRec2.desRec2_cxt/" ), str(string_name)) print ".", string_name, "."
class Rtc_Sh: def __init__(self, orb=None, server_name='localhost'): if orb is None: self.orb = CORBA.ORB_init(sys.argv) else: self.orb=orb self.name=server_name self.naming=CorbaNaming(self.orb, self.name) self.maxlen=20 self.object_list={} self.current_ctx="" #self.getRTObjectList() def resolveRTObject(self, name): try: if name.count(".rtc") == 0 : name = name+".rtc" ref=self.naming.resolveStr(name) ref._non_existent() return ref._narrow(RTObject) except: #traceback.print_exc() return None def unbind(self, name): self.naming.unbind(name) print("Unbind :", name) return def clearObjectList(self): self.object_list={} def getRTObjectList(self, name_context=None, parent=""): res=[] if name_context is None: name_context = self.naming._rootContext binds, bind_i = name_context.list(self.maxlen) for bind in binds: res = res + self.resolveBindings(bind, name_context, parent) if bind_i : tl = bind_i.next_n(self.maxlen) while tl[0]: for bind in tl[1] : res = res + self.resolveBindings(bind, name_conext, parent) tl = bind_i.next_n(self.maxlen) return res def resolveBindings(self, bind, name_context, parent): res = [] prefix=parent if parent : prefix += "/" name = prefix + URI.nameToString(bind.binding_name) if bind.binding_type == CosNaming.nobject: if bind.binding_name[0].kind == "rtc": obj = name_context.resolve(bind.binding_name) try: obj._non_existent() obj = obj._narrow(RTObject) res = [[name, obj]] self.object_list[name] = obj except: obj = None res = [[name, obj]] else: pass #self.object_list[name] = None else: ctx = name_context.resolve(bind.binding_name) ctx = ctx._narrow(CosNaming.NamingContext) parent = name res = self.getRTObjectList( ctx, parent) return res def refreshObjectList(self): self.object_list = {} return self.getRTObjectList() def getPorts(self, name): res=[] if name.count(".rtc") == 0 : name = name+".rtc" if not (name in self.object_list): self.refreshObjectList() if name in self.object_list: port_ref = self.object_list[name].get_ports() for p in port_ref: pp = p.get_port_profile() pprof = nvlist2dict(pp.properties) if pp.interfaces: ifp=pp.interfaces[0] pprof['interface_name'] = ifp.instance_name pprof['interface_type_name'] = ifp.type_name pprof['interface_polarity'] = ifp.polarity res.append( (pp.name, pprof)) else: print("No such RTC:", name) return res def getPortRef(self, name, port): res=[] if name in self.object_list: self.refreshObjectList() if name.count(".rtc") == 0 : name = name+".rtc" if name in self.object_list: port_ref = self.object_list[name].get_ports() for p in port_ref: pp = p.get_port_profile() if port == pp.name.split('.')[-1]: return p else: print("No such port:", name, ":", port) return None def getConnectors(self, name, port): port_ref=self.getPortRef(name, port) if port_ref: cons = port_ref.get_connector_profiles() return cons return None def getConnectionInfo(self, con): ports = [(con.ports[0].get_port_profile()).name, (con.ports[1].get_port_profile()).name] res={'name': con.name, 'ports': ports, 'id': con.connector_id } return res def getConnections(self, name, port): res = [] cons = self.getConnectors(name, port) if cons: for c in cons: res.append(self.getConnectionInfo(c)) return res def find_connection(self, portname1, portname2): try: name1, port1 = portname1.split(":") name2, port2 = portname2.split(":") p1=self.getPortRef(name1, port1) p2=self.getPortRef(name2, port2) cons = self.getConnectors(name1, port1) cons2 = self.getConnectors(name2, port2) if cons and cons2 : for c in cons: for c2 in cons2: if c.connector_id == c2.connector_id: return c return False except: traceback.print_exc() return None def connect(self, portname1, portname2, service=False): if service: con_prof = {'port.port_type':'CorbaPort' } else: con_prof={'dataport.dataflow_type':'push', 'dataport.interface_type':'corba_cdr' , 'dataport.subscription_type':'flush'} chk = self.find_connection(portname1, portname2) if chk is None: return None if chk : print("Conntction exists:", chk.connector_id) return try: name1, port1 = portname1.split(":") name2, port2 = portname2.split(":") p1=self.getPortRef(name1, port1) p2=self.getPortRef(name2, port2) if p1 and p2: name=string.join([name1, port1, name2, port2], '_') prof_req=ConnectorProfile(name, "", [p1, p2], dict2nvlist(con_prof)) res, prof=p1.connect(prof_req) else: res="Error in connect" except: res="Error" print(res) return def disconnect(self, portname1, portname2): try: con=self.find_connection(portname1, portname2) if con is None or not con: print("No such connrction:", portname1, portname2) con.ports[0].disconnect(con.connector_id) print("Sucess to disconnect:", portname1, portname2) except: print("Fail to disconnect:", portname1, portname2) def getEC(self, name): obj=self.resolveRTObject(name) if obj : ec=obj.get_owned_contexts()[0] return ec else: return None def activate(self, name): res=None obj=self.resolveRTObject(name) if obj : ec=obj.get_owned_contexts()[0] res=ec.activate_component(obj) return res def deactivate(self, name): res=None obj=self.resolveRTObject(name) if obj : ec=obj.get_owned_contexts()[0] res=ec.deactivate_component(obj) return res def get_component_state(self, name): stat=None obj=self.resolveRTObject(name) if obj: ec=obj.get_owned_contexts()[0] stat=ec.get_component_state(obj) return stat def terminate(self, name): obj=self.resolveRTObject(name) if obj: obj.exit() return None
class TestCorbaNaming(unittest.TestCase): def setUp(self): self.orb = OpenRTM_aist.Manager.instance().getORB() self.naming = CorbaNaming(self.orb, "localhost:2809") #self.naming.clearAll() self.name_list = [] self.name_list.append(CosNaming.NameComponent("Mon","mon_cxt")) self.name_list.append(CosNaming.NameComponent("Tus","tus_cxt")) self.name_list.append(CosNaming.NameComponent("Wed","wed_cxt")) self.name_list.append(CosNaming.NameComponent("Thu","thu_cxt")) self.name_list.append(CosNaming.NameComponent("Fri","fri_cxt")) self.name_list.append(CosNaming.NameComponent("Sat","sat_cxt")) self.name_list.append(CosNaming.NameComponent("Sun","sun_cxt")) return def tearDown(self): OpenRTM_aist.Manager.instance().shutdownManager() del self return def test_init(self): try: self.naming.init("localhost") except: print "Exeption at naming init." def test_bind(self): self.naming.clearAll() self.bind_test_sequence(self.name_list) def bind_test_sequence(self, sname): obj = self.naming.newContext() self.naming.bind(sname, obj) # resolve test new_obj = self.naming.resolve(sname) self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.") return True def test_bindByString(self): name = "localhost.host_cxt\/Manager123456.mgr_cxt/MobileRobot.cat_cxt/Kani0.rtc" lname = [] lname.append(CosNaming.NameComponent("localhost.host_cxt\/Manager123456","mgr_cxt")) lname.append(CosNaming.NameComponent("MobileRobot","cat_cxt")) lname.append(CosNaming.NameComponent("Kani0","rtc")) obj = self.naming.newContext() self.naming.bindByString(name, obj) new_obj = self.naming.resolve(name) self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.") new_obj = self.naming.resolve(lname) self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.") #def test_bindRecursive(self): # pass def test_rebind(self): obj = self.naming.newContext() self.naming.bind(self.name_list, obj) new_obj = self.naming.resolve(self.name_list) self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.") self.naming.rebind(self.name_list, obj) new_obj = self.naming.resolve(self.name_list) self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.") #def test_rebindByString(self): # pass def test_rebindRecursive(self): obj = self.naming.newContext() self.naming.bind(self.name_list, obj) new_obj = self.naming.resolve(self.name_list) self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.") self.naming.rebindRecursive(self.naming.getRootContext(), self.name_list, obj) new_obj = self.naming.resolve(self.name_list) self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.") def test_bindContext(self): obj = self.naming.newContext() name = [] name.append(CosNaming.NameComponent("bindcxt","bindcxt_cxt")) self.naming.bindContext("bindcxt.bindcxt_cxt", obj) new_obj = self.naming.resolve(name) self.assertEqual(obj._is_equivalent(new_obj), True,"Resolve failed.") def test_unbind(self): obj = self.naming.newContext() self.naming.bind(self.name_list, obj) self.naming.unbind(self.name_list) def test_bindNewContext(self): name = [] name.append(CosNaming.NameComponent("newContext","new_cxt")) self.naming.bindNewContext(name) new_obj = self.naming.resolve(name) def test_destroy(self): obj = self.naming.newContext() name = [] name.append(CosNaming.NameComponent("destroy","destroy_cxt")) self.naming.bind(name, obj) self.naming.destroy(obj) def test_destroyRecursive(self): obj = self.naming.newContext() name = [] name.append(CosNaming.NameComponent("desRec0","desRec0_cxt")) name.append(CosNaming.NameComponent("desRec1","desRec1_cxt")) name.append(CosNaming.NameComponent("desRec2","desRec2_cxt")) self.naming.bind(name, obj) self.naming.destroyRecursive(obj) def test_list(self): bl = [] bi = [] self.naming.list(self.naming.getRootContext(), 100, bl, bi) print bl[0][0].binding_name[0].id def test_toString(self): name = [] name.append(CosNaming.NameComponent("desRec0","desRec0_cxt")) name.append(CosNaming.NameComponent("desRec1","desRec1_cxt")) name.append(CosNaming.NameComponent("desRec2","desRec2_cxt")) string_name = self.naming.toString(name) self.assertEqual(str("desRec0.desRec0_cxt/desRec1.desRec1_cxt/desRec2.desRec2_cxt/"),str(string_name)) print ".",string_name,"."