bus: interface to set custom session bus
authorKonstantin Stepanov <kstep@p-nut.info>
Mon, 20 Dec 2010 10:21:20 +0000 (12:21 +0200)
committerKonstantin Stepanov <kstep@p-nut.info>
Mon, 20 Dec 2010 20:54:12 +0000 (22:54 +0200)
dbuscron/bus.py

index 7d7f5b8..6a0c3a9 100644 (file)
@@ -24,7 +24,6 @@ def dbus_to_str(value):
         log.error('convert exception', e)
         raise e
 
-
 def get_dbus_message_type(message):
     result = message.__class__.__name__[0:-7]
     for c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
@@ -36,16 +35,23 @@ class DbusBus(object):
     __system_bus = None
     __session_bus = None
 
-    def __new__(cls):
+    def __new__(cls, *args, **kw):
         if not cls.__bus:
             cls.__bus = super(DbusBus, cls).__new__(cls)
         return cls.__bus
 
-    def __init__(self):
-        self.get_session_bus_address()
+    def __init__(self, session_bus_address=None):
+        if session_bus_address:
+            self.set_session_bus_address(session_bus_address)
+        else:
+            self.get_session_bus_address()
+
         from dbus.mainloop.glib import DBusGMainLoop
         DBusGMainLoop(set_as_default=True)
 
+    def set_session_bus_address(self, value):
+        os.environ['DBUS_SESSION_BUS_ADDRESS'] = str(value)
+
     def get_session_bus_address(self):
         try:
             return os.environ['DBUS_SESSION_BUS_ADDRESS']
@@ -56,6 +62,8 @@ class DbusBus(object):
                 log('session bus address aquired', session_bus_address)
                 return session_bus_address
 
+    session_bus_address = property(get_session_bus_address, set_session_bus_address)
+
     @property
     def system(self):
         if not self.__system_bus: