dbus bridge: fixed introspection for dynamically added methods and signals

This commit is contained in:
Goffi 2011-02-04 00:13:41 +01:00
commit b200e5f8de
2 changed files with 12 additions and 0 deletions

View file

@ -342,6 +342,9 @@ class DbusObject(dbus.service.Object):
method = locals()[name]
setattr(DbusObject, name, dbus.service.method(
const_INT_PREFIX+int_suffix, in_signature=in_sign, out_signature=out_sign)(method))
function = getattr(self, name)
func_table = self._dbus_class_table[self.__class__.__module__ + '.' + self.__class__.__name__][function._dbus_interface]
func_table[function.__name__] = function #Needed for introspection
def addSignal(self, name, int_suffix, signature):
"""Dynamically add a signal to Dbus Bridge"""
@ -353,6 +356,9 @@ class DbusObject(dbus.service.Object):
signal = locals()[name]
setattr(DbusObject, name, dbus.service.signal(
const_INT_PREFIX+int_suffix, signature=signature)(signal))
function = getattr(self, name)
func_table = self._dbus_class_table[self.__class__.__module__ + '.' + self.__class__.__name__][function._dbus_interface]
func_table[function.__name__] = function #Needed for introspection
class DBusBridge(Bridge):
def __init__(self):

View file

@ -94,6 +94,9 @@ class DbusObject(dbus.service.Object):
method = locals()[name]
setattr(DbusObject, name, dbus.service.method(
const_INT_PREFIX+int_suffix, in_signature=in_sign, out_signature=out_sign)(method))
function = getattr(self, name)
func_table = self._dbus_class_table[self.__class__.__module__ + '.' + self.__class__.__name__][function._dbus_interface]
func_table[function.__name__] = function #Needed for introspection
def addSignal(self, name, int_suffix, signature):
"""Dynamically add a signal to Dbus Bridge"""
@ -105,6 +108,9 @@ class DbusObject(dbus.service.Object):
signal = locals()[name]
setattr(DbusObject, name, dbus.service.signal(
const_INT_PREFIX+int_suffix, signature=signature)(signal))
function = getattr(self, name)
func_table = self._dbus_class_table[self.__class__.__module__ + '.' + self.__class__.__name__][function._dbus_interface]
func_table[function.__name__] = function #Needed for introspection
class DBusBridge(Bridge):
def __init__(self):