Public feed #727265

Something

public text v1 · immutable
Raw Edit
·published 2007-10-05 21:50 UTC
rendered paste body
diff --git a/bin/datastore-service b/bin/datastore-service
index 03f7a89..9c249cb 100755
--- a/bin/datastore-service
+++ b/bin/datastore-service
@@ -44,6 +44,7 @@ if not sys.stdin.isatty():
 # build the datastore
 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
 bus = dbus.SessionBus()
+connected = True
 
 ds = DataStore()
 ds.registerBackend(backingstore.FileBackingStore)
@@ -55,11 +56,22 @@ ds.complete_indexing()
 logger.info("Starting Datastore %s" % (repo_dir))
 mainloop = gobject.MainLoop()
 
+def handle_disconnect():
+    global connected
+    ds.stop()
+    connected = False
+    print "shutdown cleanly"
+
 def handle_shutdown(signum, frame):
     ds.stop()
     print "shutdown cleanly"
     raise SystemExit("Shutting down on signal %s" % signum)
 
+bus.set_exit_on_disconnect(False)
+bus.add_signal_receiver(handle_disconnect,
+                        signal_name='Disconnected',
+                        dbus_interface='org.freedesktop.DBus.Local')
+
 signal.signal(signal.SIGHUP, handle_shutdown)
 signal.signal(signal.SIGTERM, handle_shutdown)
 
@@ -72,7 +84,8 @@ def main():
     import time
     context = mainloop.get_context()
     try:
-        while True:
+        while connected:
+            print connected
             context.iteration(False)
             time.sleep(0.0025)