【发布时间】:2015-12-22 08:39:33
【问题描述】:
tl;dr
是否有任何方法可以为导出的 d-bus 方法设置一个不同于被修饰的方法名称的自定义名称?
所以这是交易:我想在 D-Bus 上注册一个具有多个接口的单个对象,其中所有接口都具有相同的方法(不同的实现):
/com/quaintous
|- com.quaintous.iface1
| |- GET
|- com.quaintous.iface2
| |- GET
如果我要使用一个表示该单个对象的类并使用 method decorator 将该类的方法导出到 d-bus,我不能有两个同名的方法(第二个会覆盖第一个一)。
示例代码(需要)
class Quaintous_DBus(dbus.service.Object):
def __init__(self):
bus_name = dbus.service.BusName('com.quaintous', bus=dbus.SessionBus())
dbus.service.Object.__init__(self, bus_name, '/com/quaintous')
@dbus.service.method('com.quaintous.iface1', name="GET")
def get_iface1(self, args):
# Impl
@dbus.service.method('com.quaintous.iface2', name="GET")
def get_iface1(self, args):
# Impl
类似name="GET"。
更新
python-debus 实际上将类方法名称与 D-Bus 方法名称进行了一对一的映射,并且由于一个类不能包含两个具有相同名称的方法,因此这似乎是不可能的。我正在考虑覆盖_method_lookup 作为最后的手段,但我希望有更好的解决方案。
【问题讨论】: