From 372f54ec2a32c564a70875d473a1637c17983f73 Mon Sep 17 00:00:00 2001 From: Goffi Date: Mon, 3 Oct 2016 21:15:39 +0200 Subject: [PATCH] bridge (D-Bus): bad design fixes: - renamed outputed module to dbus_bridge (to avoid uppercase and conflict with dbus module) - class name is now Bridge for both frontend and core (make discovery/import more easy) - register renamed to register_method in core, and register_signal in frontend --- .../src/bridge/{DBus.py => dbus_bridge.py} | 4 +- frontends/src/jp/base.py | 4 +- frontends/src/primitivus/primitivus | 4 +- frontends/src/quick_frontend/quick_app.py | 4 +- .../constructors/dbus/constructor.py | 2 +- .../constructors/dbus/dbus_core_template.py | 12 +-- .../dbus/dbus_frontend_template.py | 4 +- src/bridge/{DBus.py => dbus_bridge.py} | 12 +-- src/core/sat_main.py | 94 +++++++++---------- 9 files changed, 70 insertions(+), 70 deletions(-) rename frontends/src/bridge/{DBus.py => dbus_bridge.py} (99%) rename src/bridge/{DBus.py => dbus_bridge.py} (99%) diff --git a/frontends/src/bridge/DBus.py b/frontends/src/bridge/dbus_bridge.py similarity index 99% rename from frontends/src/bridge/DBus.py rename to frontends/src/bridge/dbus_bridge.py index 140afdab..eb686901 100644 --- a/frontends/src/bridge/DBus.py +++ b/frontends/src/bridge/dbus_bridge.py @@ -59,7 +59,7 @@ def dbus_to_bridge_exception(dbus_e): return BridgeException(name, message, condition) -class DBusBridgeFrontend(BridgeFrontend): +class Bridge(BridgeFrontend): def __init__(self): try: self.sessions_bus = dbus.SessionBus() @@ -80,7 +80,7 @@ class DBusBridgeFrontend(BridgeFrontend): raise e #props = self.db_core_iface.getProperties() - def register(self, functionName, handler, iface="core"): + def register_signal(self, functionName, handler, iface="core"): if iface == "core": self.db_core_iface.connect_to_signal(functionName, handler) elif iface == "plugin": diff --git a/frontends/src/jp/base.py b/frontends/src/jp/base.py index b901538d..6b93fae0 100644 --- a/frontends/src/jp/base.py +++ b/frontends/src/jp/base.py @@ -33,7 +33,7 @@ from gi.repository import GLib from glob import iglob from importlib import import_module from sat_frontends.tools.jid import JID -from sat_frontends.bridge.DBus import DBusBridgeFrontend +from sat_frontends.bridge.dbus_bridge import Bridge from sat.core import exceptions import sat_frontends.jp from sat_frontends.jp.constants import Const as C @@ -96,7 +96,7 @@ class Jp(object): by default display a message """ try: - self.bridge = DBusBridgeFrontend() + self.bridge = Bridge() except exceptions.BridgeExceptionNoService: print(_(u"Can't connect to SàT backend, are you sure it's launched ?")) sys.exit(1) diff --git a/frontends/src/primitivus/primitivus b/frontends/src/primitivus/primitivus index 13ffea30..02b0aa88 100755 --- a/frontends/src/primitivus/primitivus +++ b/frontends/src/primitivus/primitivus @@ -28,7 +28,7 @@ from sat.tools import config as sat_config import urwid from urwid.util import is_wide_char from urwid_satext import sat_widgets -from sat_frontends.bridge.DBus import DBusBridgeFrontend +from sat_frontends.bridge.dbus_bridge import Bridge from sat_frontends.quick_frontend.quick_app import QuickApp from sat_frontends.quick_frontend import quick_utils from sat_frontends.quick_frontend import quick_chat @@ -276,7 +276,7 @@ class PrimitivusApp(QuickApp, InputHistory): AVATAR_HANDLER = False def __init__(self): - QuickApp.__init__(self, create_bridge=DBusBridgeFrontend, xmlui=xmlui, check_options=quick_utils.check_options) + QuickApp.__init__(self, create_bridge=Bridge, xmlui=xmlui, check_options=quick_utils.check_options) ## main loop setup ## self.main_widget = ProfileManager(self) diff --git a/frontends/src/quick_frontend/quick_app.py b/frontends/src/quick_frontend/quick_app.py index 3e4a0849..67dc420a 100644 --- a/frontends/src/quick_frontend/quick_app.py +++ b/frontends/src/quick_frontend/quick_app.py @@ -287,7 +287,7 @@ class QuickApp(object): if handler is None: handler = getattr(self, "{}{}".format(function_name, 'Handler')) if not with_profile: - self.bridge.register(function_name, handler, iface) + self.bridge.register_signal(function_name, handler, iface) return def signalReceived(*args, **kwargs): @@ -303,7 +303,7 @@ class QuickApp(object): self.signals_cache.setdefault(profile, []).append((function_name, handler, args, kwargs)) return # we ignore signal for profiles we don't manage handler(*args, **kwargs) - self.bridge.register(function_name, signalReceived, iface) + self.bridge.register_signal(function_name, signalReceived, iface) def addListener(self, type_, callback, profiles_filter=None): """Add a listener for an event diff --git a/src/bridge/bridge_constructor/constructors/dbus/constructor.py b/src/bridge/bridge_constructor/constructors/dbus/constructor.py index ff8ff312..22e84912 100644 --- a/src/bridge/bridge_constructor/constructors/dbus/constructor.py +++ b/src/bridge/bridge_constructor/constructors/dbus/constructor.py @@ -23,7 +23,7 @@ from sat.bridge.bridge_constructor import base_constructor class DbusConstructor(base_constructor.Constructor): NAME = "dbus" CORE_TEMPLATE = "dbus_core_template.py" - CORE_DEST = "DBus.py" + CORE_DEST = "dbus_bridge.py" CORE_FORMATS = { 'signals': """\ @dbus.service.signal(const_INT_PREFIX+const_{category}_SUFFIX, diff --git a/src/bridge/bridge_constructor/constructors/dbus/dbus_core_template.py b/src/bridge/bridge_constructor/constructors/dbus/dbus_core_template.py index bbca0293..e84541d6 100644 --- a/src/bridge/bridge_constructor/constructors/dbus/dbus_core_template.py +++ b/src/bridge/bridge_constructor/constructors/dbus/dbus_core_template.py @@ -83,7 +83,7 @@ class DbusObject(dbus.service.Object): log.debug("Init DbusObject...") self.cb = {} - def register(self, name, cb): + def register_method(self, name, cb): self.cb[name] = cb def _callback(self, name, *args, **kwargs): @@ -216,7 +216,7 @@ class DbusObject(dbus.service.Object): func_table[function.__name__] = function # Needed for introspection -class DBusBridge(object): +class Bridge(object): def __init__(self): dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) log.info("Init DBus...") @@ -230,17 +230,17 @@ class DBusBridge(object): self.dbus_bridge = DbusObject(self.session_bus, const_OBJ_PATH) ##SIGNAL_DIRECT_CALLS_PART## - def register(self, name, callback): + def register_method(self, name, callback): log.debug("registering DBus bridge method [%s]" % name) - self.dbus_bridge.register(name, callback) + self.dbus_bridge.register_method(name, callback) def addMethod(self, name, int_suffix, in_sign, out_sign, method, async=False, doc={}): """Dynamically add a method to Dbus Bridge""" #FIXME: doc parameter is kept only temporary, the time to remove it from calls log.debug("Adding method [%s] to DBus bridge" % name) self.dbus_bridge.addMethod(name, int_suffix, in_sign, out_sign, method, async) - self.register(name, method) + self.register_method(name, method) def addSignal(self, name, int_suffix, signature, doc={}): self.dbus_bridge.addSignal(name, int_suffix, signature, doc) - setattr(DBusBridge, name, getattr(self.dbus_bridge, name)) + setattr(Bridge, name, getattr(self.dbus_bridge, name)) diff --git a/src/bridge/bridge_constructor/constructors/dbus/dbus_frontend_template.py b/src/bridge/bridge_constructor/constructors/dbus/dbus_frontend_template.py index 9377a316..a313b119 100644 --- a/src/bridge/bridge_constructor/constructors/dbus/dbus_frontend_template.py +++ b/src/bridge/bridge_constructor/constructors/dbus/dbus_frontend_template.py @@ -59,7 +59,7 @@ def dbus_to_bridge_exception(dbus_e): return BridgeException(name, message, condition) -class DBusBridgeFrontend(BridgeFrontend): +class Bridge(BridgeFrontend): def __init__(self): try: self.sessions_bus = dbus.SessionBus() @@ -80,7 +80,7 @@ class DBusBridgeFrontend(BridgeFrontend): raise e #props = self.db_core_iface.getProperties() - def register(self, functionName, handler, iface="core"): + def register_signal(self, functionName, handler, iface="core"): if iface == "core": self.db_core_iface.connect_to_signal(functionName, handler) elif iface == "plugin": diff --git a/src/bridge/DBus.py b/src/bridge/dbus_bridge.py similarity index 99% rename from src/bridge/DBus.py rename to src/bridge/dbus_bridge.py index 73a4ef04..2ae50a06 100755 --- a/src/bridge/DBus.py +++ b/src/bridge/dbus_bridge.py @@ -83,7 +83,7 @@ class DbusObject(dbus.service.Object): log.debug("Init DbusObject...") self.cb = {} - def register(self, name, cb): + def register_method(self, name, cb): self.cb[name] = cb def _callback(self, name, *args, **kwargs): @@ -555,7 +555,7 @@ class DbusObject(dbus.service.Object): func_table[function.__name__] = function # Needed for introspection -class DBusBridge(object): +class Bridge(object): def __init__(self): dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) log.info("Init DBus...") @@ -607,17 +607,17 @@ class DBusBridge(object): def subscribe(self, sub_type, entity_jid, profile): self.dbus_bridge.subscribe(sub_type, entity_jid, profile) - def register(self, name, callback): + def register_method(self, name, callback): log.debug("registering DBus bridge method [%s]" % name) - self.dbus_bridge.register(name, callback) + self.dbus_bridge.register_method(name, callback) def addMethod(self, name, int_suffix, in_sign, out_sign, method, async=False, doc={}): """Dynamically add a method to Dbus Bridge""" #FIXME: doc parameter is kept only temporary, the time to remove it from calls log.debug("Adding method [%s] to DBus bridge" % name) self.dbus_bridge.addMethod(name, int_suffix, in_sign, out_sign, method, async) - self.register(name, method) + self.register_method(name, method) def addSignal(self, name, int_suffix, signature, doc={}): self.dbus_bridge.addSignal(name, int_suffix, signature, doc) - setattr(DBusBridge, name, getattr(self.dbus_bridge, name)) \ No newline at end of file + setattr(Bridge, name, getattr(self.dbus_bridge, name)) \ No newline at end of file diff --git a/src/core/sat_main.py b/src/core/sat_main.py index f6e1e7ff..f743aa14 100644 --- a/src/core/sat_main.py +++ b/src/core/sat_main.py @@ -25,7 +25,7 @@ from twisted.words.protocols.jabber import jid from twisted.words.xish import domish from twisted.internet import reactor from wokkel.xmppim import RosterItem -from sat.bridge.DBus import DBusBridge +from sat.bridge.dbus_bridge import Bridge from sat.core import xmpp from sat.core import exceptions from sat.core.log import getLogger @@ -61,55 +61,55 @@ class SAT(service.Service): self.trigger = trigger.TriggerManager() # trigger are used to change SàT behaviour try: - self.bridge = DBusBridge() + self.bridge = Bridge() except exceptions.BridgeInitError: log.error(u"Bridge can't be initialised, can't start SàT core") sys.exit(1) - self.bridge.register("getReady", lambda: self.initialised) - self.bridge.register("getVersion", lambda: self.full_version) - self.bridge.register("getFeatures", self.getFeatures) - self.bridge.register("getProfileName", self.memory.getProfileName) - self.bridge.register("getProfilesList", self.memory.getProfilesList) - self.bridge.register("getEntityData", lambda jid_, keys, profile: self.memory.getEntityData(jid.JID(jid_), keys, profile)) - self.bridge.register("getEntitiesData", self.memory._getEntitiesData) - self.bridge.register("asyncCreateProfile", self.memory.asyncCreateProfile) - self.bridge.register("asyncDeleteProfile", self.memory.asyncDeleteProfile) - self.bridge.register("profileStartSession", self.memory.startSession) - self.bridge.register("profileIsSessionStarted", self.memory._isSessionStarted) - self.bridge.register("profileSetDefault", self.memory.profileSetDefault) - self.bridge.register("asyncConnect", self._asyncConnect) - self.bridge.register("disconnect", self.disconnect) - self.bridge.register("getContacts", self.getContacts) - self.bridge.register("getContactsFromGroup", self.getContactsFromGroup) - self.bridge.register("getMainResource", self.memory._getMainResource) - self.bridge.register("getPresenceStatuses", self.memory._getPresenceStatuses) - self.bridge.register("getWaitingSub", self.memory.getWaitingSub) - self.bridge.register("messageSend", self._messageSend) - self.bridge.register("getConfig", self._getConfig) - self.bridge.register("setParam", self.setParam) - self.bridge.register("getParamA", self.memory.getStringParamA) - self.bridge.register("asyncGetParamA", self.memory.asyncGetStringParamA) - self.bridge.register("asyncGetParamsValuesFromCategory", self.memory.asyncGetParamsValuesFromCategory) - self.bridge.register("getParamsUI", self.memory.getParamsUI) - self.bridge.register("getParamsCategories", self.memory.getParamsCategories) - self.bridge.register("paramsRegisterApp", self.memory.paramsRegisterApp) - self.bridge.register("historyGet", self.memory._historyGet) - self.bridge.register("setPresence", self._setPresence) - self.bridge.register("subscription", self.subscription) - self.bridge.register("addContact", self._addContact) - self.bridge.register("updateContact", self._updateContact) - self.bridge.register("delContact", self._delContact) - self.bridge.register("isConnected", self.isConnected) - self.bridge.register("launchAction", self.launchCallback) - self.bridge.register("actionsGet", self.actionsGet) - self.bridge.register("progressGet", self._progressGet) - self.bridge.register("progressGetAll", self._progressGetAll) - self.bridge.register("getMenus", self.getMenus) - self.bridge.register("getMenuHelp", self.getMenuHelp) - self.bridge.register("discoInfos", self.memory.disco._discoInfos) - self.bridge.register("discoItems", self.memory.disco._discoItems) - self.bridge.register("saveParamsTemplate", self.memory.save_xml) - self.bridge.register("loadParamsTemplate", self.memory.load_xml) + self.bridge.register_method("getReady", lambda: self.initialised) + self.bridge.register_method("getVersion", lambda: self.full_version) + self.bridge.register_method("getFeatures", self.getFeatures) + self.bridge.register_method("getProfileName", self.memory.getProfileName) + self.bridge.register_method("getProfilesList", self.memory.getProfilesList) + self.bridge.register_method("getEntityData", lambda jid_, keys, profile: self.memory.getEntityData(jid.JID(jid_), keys, profile)) + self.bridge.register_method("getEntitiesData", self.memory._getEntitiesData) + self.bridge.register_method("asyncCreateProfile", self.memory.asyncCreateProfile) + self.bridge.register_method("asyncDeleteProfile", self.memory.asyncDeleteProfile) + self.bridge.register_method("profileStartSession", self.memory.startSession) + self.bridge.register_method("profileIsSessionStarted", self.memory._isSessionStarted) + self.bridge.register_method("profileSetDefault", self.memory.profileSetDefault) + self.bridge.register_method("asyncConnect", self._asyncConnect) + self.bridge.register_method("disconnect", self.disconnect) + self.bridge.register_method("getContacts", self.getContacts) + self.bridge.register_method("getContactsFromGroup", self.getContactsFromGroup) + self.bridge.register_method("getMainResource", self.memory._getMainResource) + self.bridge.register_method("getPresenceStatuses", self.memory._getPresenceStatuses) + self.bridge.register_method("getWaitingSub", self.memory.getWaitingSub) + self.bridge.register_method("messageSend", self._messageSend) + self.bridge.register_method("getConfig", self._getConfig) + self.bridge.register_method("setParam", self.setParam) + self.bridge.register_method("getParamA", self.memory.getStringParamA) + self.bridge.register_method("asyncGetParamA", self.memory.asyncGetStringParamA) + self.bridge.register_method("asyncGetParamsValuesFromCategory", self.memory.asyncGetParamsValuesFromCategory) + self.bridge.register_method("getParamsUI", self.memory.getParamsUI) + self.bridge.register_method("getParamsCategories", self.memory.getParamsCategories) + self.bridge.register_method("paramsRegisterApp", self.memory.paramsRegisterApp) + self.bridge.register_method("historyGet", self.memory._historyGet) + self.bridge.register_method("setPresence", self._setPresence) + self.bridge.register_method("subscription", self.subscription) + self.bridge.register_method("addContact", self._addContact) + self.bridge.register_method("updateContact", self._updateContact) + self.bridge.register_method("delContact", self._delContact) + self.bridge.register_method("isConnected", self.isConnected) + self.bridge.register_method("launchAction", self.launchCallback) + self.bridge.register_method("actionsGet", self.actionsGet) + self.bridge.register_method("progressGet", self._progressGet) + self.bridge.register_method("progressGetAll", self._progressGetAll) + self.bridge.register_method("getMenus", self.getMenus) + self.bridge.register_method("getMenuHelp", self.getMenuHelp) + self.bridge.register_method("discoInfos", self.memory.disco._discoInfos) + self.bridge.register_method("discoItems", self.memory.disco._discoItems) + self.bridge.register_method("saveParamsTemplate", self.memory.save_xml) + self.bridge.register_method("loadParamsTemplate", self.memory.load_xml) self.memory.initialized.addCallback(self._postMemoryInit)