import dbus
+from dbuscron.logger import Logger
+log = Logger(__name__)
+
def dbus_to_str(value):
+ log('converting', value, 'of type', type(value))
if isinstance(value, dbus.Byte):
return str(int(value))
elif isinstance(value, dbus.ByteArray):
return ','.join(str(ord(v)) for v in value)
elif isinstance(value, dbus.Array):
- return ','.join(str(v) for v in value)
+ return ','.join(dbus_to_str(v) for v in value)
elif isinstance(value, dbus.Dictionary):
- return ','.join('%s:%s' % (k, v) for k, v in value.iteritems())
+ return ','.join('%s:%s' % (k, dbus_to_str(v)) for k, v in value.iteritems())
else:
return str(value)
def register(self):
rule = str(self)
if rule:
- self._bus.add_match_string(str(self))
+ self._bus.add_match_string(rule)
+
+ def unregister(self):
+ rule = str(self)
+ if rule:
+ self._bus.remove_match_string(rule)
+
+ def __del__(self):
+ self.unregister()
def __str__(self):
rule = []