コード例 #1
0
ファイル: tce_util.py プロジェクト: demonxjj/TCE
def loadInterfaceDefs():
    global ifs_def
    if ifs_def:
        return

    if not os.path.exists(IFX_INDEX_FILE):
        # print 'preconfig file: %s not found,skipped..'%IFX_INDEX_FILE
        return -1

    if not ifs_def:
        f = open(IFX_INDEX_FILE)
        content = f.read()
        f.close()
        doc = xmlParseString(content)
        root = doc.documentElement  # <interfaces>
        ifs = root.getElementsByTagName('if')
        for if_ in ifs:
            name = if_.getAttribute('name')
            index = if_.getAttribute('index')
            expose = if_.getAttribute('delegate_expose')
            functions = {}
            fxs = if_.getElementsByTagName('f')

            for fx in fxs:
                f_name = fx.getAttribute('name')
                f_index = fx.getAttribute('index')
                functions[f_name] = {'index': f_index}
            ifs_def[name] = {
                'index': index,
                'delegate_expose': expose,
                'functions': functions
            }
コード例 #2
0
ファイル: config.py プロジェクト: chingsos/django-learning
def readEndpoints(xmlfile):
    '''
		读取service.xml定义的所有ep配置参数
	'''
    f = open(xmlfile)
    d = f.read()
    f.close()
    doc = xmlParseString(d)
    r = doc.documentElement

    # endpoints
    epdefs = {}  #{EP_IDX:ep}

    e = r.getElementsByTagName('EndPoints')

    e2 = e[0].getElementsByTagName('ep')
    epidx = 1
    for e in e2:
        ep = EndPoint()  # 通信端点类
        ep.id = epidx
        ep.name = e.getAttribute('name')
        ep.type = e.getAttribute('type')
        ep.host = e.getAttribute('host')
        ep.addr = e.getAttribute('address')
        ep.port = int(e.getAttribute('port'))
        epidx += 1
        epdefs[ep.name] = ep  # 记录通信端点
    return epdefs
コード例 #3
0
ファイル: tce_util.py プロジェクト: adoggie/TCE
def loadInterfaceDefs():
	global  ifs_def
	if ifs_def:
		return

	if not os.path.exists( IFX_INDEX_FILE ):
		# print 'preconfig file: %s not found,skipped..'%IFX_INDEX_FILE
		return -1

	if not ifs_def:
		f = open( IFX_INDEX_FILE)
		content = f.read()
		f.close()
		doc = xmlParseString(content)
		root = doc.documentElement  # <interfaces>
		ifs = root.getElementsByTagName('if')
		for if_ in ifs:
			name = if_.getAttribute('name')
			index = if_.getAttribute('index')
			expose = if_.getAttribute('delegate_expose')
			functions = {}
			fxs = if_.getElementsByTagName('f')

			for fx in fxs:
				f_name = fx.getAttribute('name')
				f_index = fx.getAttribute('index')
				functions[f_name] = {'index':f_index}
			ifs_def[name] = {'index':index,'delegate_expose':expose,'functions':functions}
コード例 #4
0
def init_PYTHONPATH(xmlfile, tag='env'):
    f = open(xmlfile)
    d = f.read()
    f.close()
    doc = xmlParseString(d)
    r = doc.documentElement
    rs = r.getElementsByTagName(tag)
    if rs:
        e = rs[0]
        pathes = e.getAttribute('pythonpath').split(',')
        for p in pathes:
            sys.path.insert(0, p)
コード例 #5
0
ファイル: utils.py プロジェクト: adoggie/NewGis2013
def init_PYTHONPATH(xmlfile,tag='env'):
	f = open(xmlfile)
	d = f.read()
	f.close()
	doc = xmlParseString(d)
	r = doc.documentElement
	rs = r.getElementsByTagName(tag)
	if rs:
		e = rs[0]
		pathes = e.getAttribute('pythonpath').split(',')
		for p in pathes:
			sys.path.insert(0,p)
コード例 #6
0
    def _initConfigs(self):
        f = open('config.xml')
        d = f.read()
        f.close()
        doc = xmlParseString(d)
        r = doc.documentElement

        e = r.getElementsByTagName('config')[0]
        name = e.getAttribute("name")
        file = e.getAttribute("file")

        # -- init rpc service --

        tce.RpcCommunicator.instance().init(name, file)
        self.adapter = tce.RpcCommunicator.instance().createAdapter(
            'das', 'mq_dtu_1')
        self.server = DtuServiceImpl(self)
        self.adapter.addServant(self.server)
        self.aomctrl = AoModuleCtrlImpl(self)
        self.adapter.addServant(self.aomctrl)

        # -- begin adapter service ---
        e = r.getElementsByTagName('services')
        if not e:
            return False
        svcs = e[0].getElementsByTagName('service')

        for e in svcs:
            name = e.getAttribute('name')
            prot = e.getAttribute('proto')
            host = e.getAttribute('host')
            port = e.getAttribute('port')
            cls = e.getAttribute('codec')
            enable = e.getAttribute('enable')
            if enable != 'true':
                continue
            se = ServiceEntry(name, prot, host, port, cls)
            self.services.append(se)
コード例 #7
0
ファイル: das.py プロジェクト: adoggie/NewGis2013
	def _initConfigs(self):
		f = open('config.xml')
		d = f.read()
		f.close()
		doc = xmlParseString(d)
		r = doc.documentElement

		e = r.getElementsByTagName('config')[0]
		name = e.getAttribute("name")
		file = e.getAttribute("file")

		# -- init rpc service --

		tce.RpcCommunicator.instance().init(name,file)
		self.adapter = tce.RpcCommunicator.instance().createAdapter('das','mq_dtu_1')
		self.server = DtuServiceImpl(self)
		self.adapter.addServant(self.server)
		self.aomctrl = AoModuleCtrlImpl(self)
		self.adapter.addServant(self.aomctrl)

		# -- begin adapter service ---
		e = r.getElementsByTagName('services')
		if not e:
			return False
		svcs = e[0].getElementsByTagName('service')

		for e in svcs:
			name = e.getAttribute('name')
			prot = e.getAttribute('proto')
			host = e.getAttribute('host')
			port = e.getAttribute('port')
			cls  = e.getAttribute('codec')
			enable = e.getAttribute('enable')
			if enable!='true':
				continue
			se = ServiceEntry(name,prot,host,port,cls)
			self.services.append(se)
コード例 #8
0
ファイル: communicator.py プロジェクト: adoggie/TCE
	def initMessageRoute(self,xmlfile=''):

		if not xmlfile:
			return False
		f = open(xmlfile)
		d = f.read()
		f.close()
		doc = xmlParseString(d)
		r = doc.documentElement

		#- 检索服务配置信息
		servername = self.server.getName()

		e = r.getElementsByTagName('InterfaceDef')
		if not e:
			log_error('Tag:InterfaceDef not defined!')
			return False
		ifs = e[0].getElementsByTagName('if')

		#接口类型定义
		ifxdefs={} #{name:ifx}
		for e in ifs:
			ifx = InterfaceDef()
			ifx.name = e.getAttribute('name')
			ifx.id = int(e.getAttribute('id'))
			ifxdefs[ifx.name] = ifx

		#--- VariantDefs ---

		variants={}
		e =  r.getElementsByTagName('VariantDef')[0]
		if e:
			e2 = e.getElementsByTagName('var')
			for e3 in e2:
				name = e3.getAttribute('name')
				value = e3.getAttribute('value')
				variants[name] = value

		#--- End VariantDefs ---


		# endpoints
		epdefs = {} #{EP_IDX:ep}

		e = r.getElementsByTagName('EndPoints')
		if not e:
			log_error('Tag: EndPoints not found!')
			return False
		e2 = e[0].getElementsByTagName('ep')
		epidx = 1
		for e in e2:
			ep = RpcEndPoint()          # 通信端点类
			ep.id = epidx
			ep.name = e.getAttribute('name')
			ep.type = e.getAttribute('type')

			#-- 变量替换  <VariantDef><var/></VariantDef>
			ep.host = e.getAttribute('host')
			ep.host = self.__variantReplace(ep.host,variants)

			ep.addr = e.getAttribute('address')
			ep.addr = self.__variantReplace(ep.addr,variants)

			ep.port = e.getAttribute('port')
			ep.port = self.__variantReplace(ep.port,variants)
			ep.port = int(ep.port)

			# print ep.host,ep.port

			ep.keyfile = e.getAttribute('keyfile').strip()
			ep.certfile = e.getAttribute('certfile').strip()
			s = e.getAttribute('compress').strip()
			if s:
				ep.compress = utils.intValueOfString(s,message.COMPRESS_ZLIB)

			epidx+=1
			epdefs[ep.name] = ep        # 记录通信端点

		# -- servers
		e = r.getElementsByTagName('servers')
		if not e:
			log_error('Tag: servers not found!')
			return False
		e2 = e[0].getElementsByTagName('server')
		for e in e2:
			if servername != e.getAttribute('name'):
				continue
			server = LocalServer()
			self.server = server
			server.name = e.getAttribute('name')
			'''
			type_ =  e.getAttribute('type')
			svc = svcdefs.get(type_)
			if not svc:
				log_error('service <%s> not defined!'%type_)
				return False
			server.service = svc
			server.id = int(e.getAttribute('id'))
			'''
			e3 = e.getElementsByTagName('route')
			for e4 in e3:
				route = RpcIfRouteDetail()
				ifname = e4.getAttribute('if')
				ifx = ifxdefs.get(ifname)
				if not ifx:
					log_error(' interface <%s> not defined!'%ifname)
					return False
				route.ifx = ifx

				e5 = e4.getElementsByTagName('call')        #RpcMsg CALL
				for e6 in e5:
					name = e6.getAttribute('in')
					ep = epdefs.get(name)
					inout = RpcRouteInoutPair()
					if not ep:
						print epdefs
						log_error('endpoint <%s> not defined!'%name)
						return False
					inout.in_ = ep
					server.ep_reads[ep.name] = ep   # cached ep
					server.name_eps[ep.name] = ep   # cached ep

					name = e6.getAttribute('out')
					ep = epdefs.get(name)
					if not ep:
						log_error('endpoint <%s> not defined!'%name)
						return False
					inout.out = ep
					server.ep_writes[ep.name] = ep  #cached ep
					server.name_eps[ep.name] = ep   #cached ep

					route.calls[inout.in_.id] = inout #id - increament value form 1

				e5 = e4.getElementsByTagName('return')   #RpcMsg RETURN
				for e6 in e5:
					name = e6.getAttribute('in')
					ep = epdefs.get(name)
					inout = RpcRouteInoutPair()
					if not ep:
						log_error('endpoint <%s> not defined!'%name)
						return False

					server.ep_reads[ep.name] = ep
					server.name_eps[ep.name] = ep
					inout.in_ = ep
					name = e6.getAttribute('out')
					ep = epdefs.get(name)
					if not ep:
						log_error('endpoint <%s> not defined!'%name)
						return False
					inout.out = ep
					server.ep_writes[ep.name] = ep
					server.name_eps[ep.name] = ep
					route.returns[inout.in_.id] = inout

				server.routes[route.ifx.id] = route  # cached route talbe of which interface
			#<extra_mqs/>
			els = e.getElementsByTagName('extra_mqs')
			if els:
				e5 = els[0]
				ins = e5.getAttribute('ins').strip().split(',')
				outs =e5.getAttribute('outs').strip().split(',')
				for name in ins:
					if not name.strip():continue
					ep = epdefs.get(name)
					if not ep:
						log_error('endpoint <%s> not defined!'%name)
						return False
					server.ep_reads[ep.name] = ep
					server.name_eps[ep.name] = ep

				for name in outs:
					if not name.strip():continue
					ep = epdefs.get(name)
					if not ep:
						log_error('endpoint: "%s" not defined!'%name)
						return False
					server.ep_writes[ep.name] = ep
					server.name_eps[ep.name] = ep

			#properties  app 的属性配置
			els = e.getElementsByTagName('properties')
			if els:
				e5 = els[0]
				for e6 in e5.getElementsByTagName('property'):
					name = e6.getAttribute('name')
					value = e6.getAttribute('value')
					self.server.props[name] = value



		if not self.server:
			log_error('localserver not defined!')
			return False

#		print self.server.name_eps
#		print self.server.mq_reads
#		print self.server.mq_writes

		#打开ep,如是mq的情况,立刻能获取消息,此刻未绑定adapter,所以消息无法map到对应的rpc函数
		for ep in self.server.ep_reads.values():
			#print ep
			if not ep.open(AF_READ):
				return False

		for  ep in self.server.ep_writes.values():

			if not ep.open(AF_WRITE):
				return False

		return True
コード例 #9
0
ファイル: communicator.py プロジェクト: demonxjj/TCE
    def initMessageRoute(self, xmlfile=''):

        if not xmlfile:
            return False
        f = open(xmlfile)
        d = f.read()
        f.close()
        doc = xmlParseString(d)
        r = doc.documentElement

        #- 检索服务配置信息
        servername = self.server.getName()

        e = r.getElementsByTagName('InterfaceDef')
        if not e:
            log_error('Tag:InterfaceDef not defined!')
            return False
        ifs = e[0].getElementsByTagName('if')

        #接口类型定义
        ifxdefs = {}  #{name:ifx}
        for e in ifs:
            ifx = InterfaceDef()
            ifx.name = e.getAttribute('name')
            ifx.id = int(e.getAttribute('id'))
            ifxdefs[ifx.name] = ifx

        #--- VariantDefs ---

        variants = {}
        e = r.getElementsByTagName('VariantDef')[0]
        if e:
            e2 = e.getElementsByTagName('var')
            for e3 in e2:
                name = e3.getAttribute('name')
                value = e3.getAttribute('value')
                variants[name] = value

        #--- End VariantDefs ---

        # endpoints
        epdefs = {}  #{EP_IDX:ep}

        e = r.getElementsByTagName('EndPoints')
        if not e:
            log_error('Tag: EndPoints not found!')
            return False
        e2 = e[0].getElementsByTagName('ep')
        epidx = 1
        for e in e2:
            ep = RpcEndPoint()  # 通信端点类
            ep.id = epidx
            ep.name = e.getAttribute('name')
            ep.type = e.getAttribute('type')

            #-- 变量替换  <VariantDef><var/></VariantDef>
            ep.host = e.getAttribute('host')
            ep.host = self.__variantReplace(ep.host, variants)

            ep.addr = e.getAttribute('address')
            ep.addr = self.__variantReplace(ep.addr, variants)

            ep.port = e.getAttribute('port')
            ep.port = self.__variantReplace(ep.port, variants)
            ep.port = int(ep.port)

            # print ep.host,ep.port

            ep.keyfile = e.getAttribute('keyfile').strip()
            ep.certfile = e.getAttribute('certfile').strip()
            s = e.getAttribute('compress').strip()
            if s:
                ep.compress = utils.intValueOfString(s, message.COMPRESS_ZLIB)

            epidx += 1
            epdefs[ep.name] = ep  # 记录通信端点

        # -- servers
        e = r.getElementsByTagName('servers')
        if not e:
            log_error('Tag: servers not found!')
            return False
        e2 = e[0].getElementsByTagName('server')
        for e in e2:
            if servername != e.getAttribute('name'):
                continue
            server = LocalServer()
            self.server = server
            server.name = e.getAttribute('name')
            '''
			type_ =  e.getAttribute('type')
			svc = svcdefs.get(type_)
			if not svc:
				log_error('service <%s> not defined!'%type_)
				return False
			server.service = svc
			server.id = int(e.getAttribute('id'))
			'''
            e3 = e.getElementsByTagName('route')
            for e4 in e3:
                route = RpcIfRouteDetail()
                ifname = e4.getAttribute('if')
                ifx = ifxdefs.get(ifname)
                if not ifx:
                    log_error(' interface <%s> not defined!' % ifname)
                    return False
                route.ifx = ifx

                e5 = e4.getElementsByTagName('call')  #RpcMsg CALL
                for e6 in e5:
                    name = e6.getAttribute('in')
                    ep = epdefs.get(name)
                    inout = RpcRouteInoutPair()
                    if not ep:
                        print epdefs
                        log_error('endpoint <%s> not defined!' % name)
                        return False
                    inout.in_ = ep
                    server.ep_reads[ep.name] = ep  # cached ep
                    server.name_eps[ep.name] = ep  # cached ep

                    name = e6.getAttribute('out')
                    ep = epdefs.get(name)
                    if not ep:
                        log_error('endpoint <%s> not defined!' % name)
                        return False
                    inout.out = ep
                    server.ep_writes[ep.name] = ep  #cached ep
                    server.name_eps[ep.name] = ep  #cached ep

                    route.calls[
                        inout.in_.id] = inout  #id - increament value form 1

                e5 = e4.getElementsByTagName('return')  #RpcMsg RETURN
                for e6 in e5:
                    name = e6.getAttribute('in')
                    ep = epdefs.get(name)
                    inout = RpcRouteInoutPair()
                    if not ep:
                        log_error('endpoint <%s> not defined!' % name)
                        return False

                    server.ep_reads[ep.name] = ep
                    server.name_eps[ep.name] = ep
                    inout.in_ = ep
                    name = e6.getAttribute('out')
                    ep = epdefs.get(name)
                    if not ep:
                        log_error('endpoint <%s> not defined!' % name)
                        return False
                    inout.out = ep
                    server.ep_writes[ep.name] = ep
                    server.name_eps[ep.name] = ep
                    route.returns[inout.in_.id] = inout

                server.routes[
                    route.ifx.
                    id] = route  # cached route talbe of which interface
            #<extra_mqs/>
            els = e.getElementsByTagName('extra_mqs')
            if els:
                e5 = els[0]
                ins = e5.getAttribute('ins').strip().split(',')
                outs = e5.getAttribute('outs').strip().split(',')
                for name in ins:
                    if not name.strip(): continue
                    ep = epdefs.get(name)
                    if not ep:
                        log_error('endpoint <%s> not defined!' % name)
                        return False
                    server.ep_reads[ep.name] = ep
                    server.name_eps[ep.name] = ep

                for name in outs:
                    if not name.strip(): continue
                    ep = epdefs.get(name)
                    if not ep:
                        log_error('endpoint: "%s" not defined!' % name)
                        return False
                    server.ep_writes[ep.name] = ep
                    server.name_eps[ep.name] = ep

            #properties  app 的属性配置
            els = e.getElementsByTagName('properties')
            if els:
                e5 = els[0]
                for e6 in e5.getElementsByTagName('property'):
                    name = e6.getAttribute('name')
                    value = e6.getAttribute('value')
                    self.server.props[name] = value

        if not self.server:
            log_error('localserver not defined!')
            return False

#		print self.server.name_eps
#		print self.server.mq_reads
#		print self.server.mq_writes

#打开ep,如是mq的情况,立刻能获取消息,此刻未绑定adapter,所以消息无法map到对应的rpc函数
        for ep in self.server.ep_reads.values():
            #print ep
            if not ep.open(AF_READ):
                return False

        for ep in self.server.ep_writes.values():

            if not ep.open(AF_WRITE):
                return False

        return True