"""
me._mons = []
me._loop = D.mainloop.glib.DBusGMainLoop()
+ me._state = 'startup'
me._reconnect()
def addmon(me, mon):
If we fail the first time, retry periodically.
"""
+ if me._state == 'startup':
+ T.aside(SM.notify, 'conntrack', 'dbus-connection', 'startup')
+ elif me._state == 'connected':
+ T.aside(SM.notify, 'conntrack', 'dbus-connection', 'lost')
+ else:
+ T.aside(SM.notify, 'conntrack', 'dbus-connection',
+ 'state=%s' % me._state)
+ me._state == 'reconnecting'
me._bus = None
if me._try_connect():
G.timeout_add_seconds(5, me._try_connect)
If we succeed, attach the monitors.
"""
try:
- bus = D.SystemBus(mainloop = me._loop, private = True)
- except D.DBusException:
+ addr = OS.getenv('TRIPE_CONNTRACK_BUS')
+ if addr == 'SESSION':
+ bus = D.SessionBus(mainloop = me._loop, private = True)
+ elif addr is not None:
+ bus = D.bus.BusConnection(addr, mainloop = me._loop)
+ else:
+ bus = D.SystemBus(mainloop = me._loop, private = True)
+ for m in me._mons:
+ m.attach(bus)
+ except D.DBusException, e:
return True
me._bus = bus
+ me._state = 'connected'
bus.call_on_disconnection(me._reconnect)
- for m in me._mons:
- m.attach(bus)
+ T.aside(SM.notify, 'conntrack', 'dbus-connection', 'connected')
return False
###--------------------------------------------------------------------------