# HG changeset patch # User Goffi # Date 1307378130 -7200 # Node ID eb9d33ba4e3603ca6fe304bf33cf6138a641f3e0 # Parent f147b778511a0b74f1fbc3fe6efa5448049af08d bridge: templates' constants can now be overrided diff -r f147b778511a -r eb9d33ba4e36 src/bridge/bridge_constructor/bridge_contructor.py --- a/src/bridge/bridge_constructor/bridge_contructor.py Mon Jun 06 18:34:40 2011 +0200 +++ b/src/bridge/bridge_constructor/bridge_contructor.py Mon Jun 06 18:35:30 2011 +0200 @@ -39,6 +39,8 @@ DEFAULT_PROTOCOLE='dbus' FLAGS=['deprecated', 'async'] +ENV_OVERRIDE = "SAT_BRIDGE_CONST_" #Prefix used to override a constant + import sys import os from os import path @@ -378,6 +380,8 @@ #at this point, signals_part, methods_part and direct_calls should be filled, #we just have to place them in the right part of the template core_bridge = [] + const_override_pref = filter(lambda env: env.startswith(ENV_OVERRIDE), os.environ) + const_override = [env[len(ENV_OVERRIDE):] for env in const_override_pref] try: with open(self.core_template) as core_template: for line in core_template: @@ -388,6 +392,12 @@ elif line.startswith('##DIRECT_CALLS##'): core_bridge.extend(direct_calls) else: + if line.startswith('const_'): + const_name = line[len('const_'):line.find(' = ')] + if const_name in const_override: + print ("const %s overriden" % const_name) + core_bridge.append('const_%s = %s' % (const_name, os.environ[ENV_OVERRIDE+const_name])) + continue core_bridge.append(line.replace('\n','')) except IOError: print ("Can't open template file [%s]" % self.core_template) @@ -430,12 +440,20 @@ #at this point, methods_part should be filled, #we just have to place it in the right part of the template frontend_bridge = [] + const_override_pref = filter(lambda env: env.startswith(ENV_OVERRIDE), os.environ) + const_override = [env[len(ENV_OVERRIDE):] for env in const_override_pref] try: with open(self.frontend_template) as frontend_template: for line in frontend_template: if line.startswith('##METHODS_PART##'): frontend_bridge.extend(methods_part) else: + if line.startswith('const_'): + const_name = line[len('const_'):line.find(' = ')] + if const_name in const_override: + print ("const %s overriden" % const_name) + frontend_bridge.append('const_%s = %s' % (const_name, os.environ[ENV_OVERRIDE+const_name])) + continue frontend_bridge.append(line.replace('\n','')) except IOError: print ("Can't open template file [%s]" % self.frontend_template) diff -r f147b778511a -r eb9d33ba4e36 src/bridge/bridge_constructor/dbus_core_template.py --- a/src/bridge/bridge_constructor/dbus_core_template.py Mon Jun 06 18:34:40 2011 +0200 +++ b/src/bridge/bridge_constructor/dbus_core_template.py Mon Jun 06 18:35:30 2011 +0200 @@ -27,6 +27,7 @@ from logging import debug, info const_INT_PREFIX = "org.goffi.SAT" #Interface prefix +const_OBJ_PATH = '/org/goffi/SAT/bridge' const_COMM_SUFFIX = ".communication" const_REQ_SUFFIX = ".request" @@ -125,7 +126,7 @@ info ("Init DBus...") self.session_bus = dbus.SessionBus() self.dbus_name = dbus.service.BusName(const_INT_PREFIX, self.session_bus) - self.dbus_bridge = DbusObject(self.session_bus, '/org/goffi/SAT/bridge') + self.dbus_bridge = DbusObject(self.session_bus, const_OBJ_PATH) ##DIRECT_CALLS## diff -r f147b778511a -r eb9d33ba4e36 src/bridge/bridge_constructor/dbus_frontend_template.py --- a/src/bridge/bridge_constructor/dbus_frontend_template.py Mon Jun 06 18:34:40 2011 +0200 +++ b/src/bridge/bridge_constructor/dbus_frontend_template.py Mon Jun 06 18:35:30 2011 +0200 @@ -23,6 +23,11 @@ import dbus, dbus.glib from logging import debug +const_INT_PREFIX = "org.goffi.SAT" #Interface prefix +const_OBJ_PATH = '/org/goffi/SAT/bridge' +const_COMM_SUFFIX = ".communication" +const_REQ_SUFFIX = ".request" + class BridgeExceptionNoService(Exception): pass @@ -30,12 +35,12 @@ def __init__(self): try: self.sessions_bus = dbus.SessionBus() - self.db_object = self.sessions_bus.get_object('org.goffi.SAT', - '/org/goffi/SAT/bridge') + self.db_object = self.sessions_bus.get_object(const_INT_PREFIX, + const_OBJ_PATH) self.db_comm_iface = dbus.Interface(self.db_object, - dbus_interface='org.goffi.SAT.communication') + dbus_interface=const_INT_PREFIX + const_COMM_SUFFIX) self.db_req_iface = dbus.Interface(self.db_object, - dbus_interface='org.goffi.SAT.request') + dbus_interface=const_INT_PREFIX + const_REQ_SUFFIX) except dbus.exceptions.DBusException,e: if e._dbus_error_name=='org.freedesktop.DBus.Error.ServiceUnknown': raise BridgeExceptionNoService