[Telepathy-commits] [telepathy-pinocchio/master] handle existing instances of the CM gracefully
Travis Reitter
travis.reitter at collabora.co.uk
Tue Aug 19 10:35:37 PDT 2008
---
libexec/telepathy-pinocchio | 16 ++++++++++++----
pinocchio/connection_manager.py | 9 ++++++++-
2 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/libexec/telepathy-pinocchio b/libexec/telepathy-pinocchio
index 0a38b69..40f47bd 100755
--- a/libexec/telepathy-pinocchio
+++ b/libexec/telepathy-pinocchio
@@ -20,11 +20,13 @@
# 02110-1301 USA
import gobject
-from dbus.mainloop.glib import DBusGMainLoop
+import dbus.mainloop.glib
+import dbus
+import sys
import pinocchio as pin
-TIMEOUT_MS = 3000
+TIMEOUT_MS = 10000
def assert_cm_connections(mainloop, manager):
if len(manager._connections) <= 0:
@@ -34,9 +36,15 @@ def assert_cm_connections(mainloop, manager):
return True
if __name__ == '__main__':
- DBusGMainLoop(set_as_default=True)
+ dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+
+ manager = None
+ try:
+ manager = pin.ConnectionManager()
+ except dbus.NameExistsException:
+ print >> sys.stderr,'telepathy-pinocchio is already running; exiting...'
+ sys.exit(0)
- manager = pin.ConnectionManager()
mainloop = gobject.MainLoop()
gobject.timeout_add(TIMEOUT_MS, assert_cm_connections, mainloop, manager)
diff --git a/pinocchio/connection_manager.py b/pinocchio/connection_manager.py
index 71346ba..055b33b 100644
--- a/pinocchio/connection_manager.py
+++ b/pinocchio/connection_manager.py
@@ -20,8 +20,8 @@
import os.path
import shutil
from xml.dom import minidom
+import dbus
import dbus.service
-
import telepathy as tp
import pinocchio as pin
@@ -38,6 +38,13 @@ class ConnectionManager(tp.server.ConnectionManager):
self._protos[pin.common.PROTO_DEFAULT] = pin.connection.Connection
+ bus = dbus.SessionBus()
+
+ rv = bus.request_name(pin.common.CM_PINOCCHIO,
+ dbus.bus.NAME_FLAG_DO_NOT_QUEUE)
+ if rv == dbus.bus.REQUEST_NAME_REPLY_EXISTS:
+ raise dbus.NameExistsException (pin.common.CM_PINOCCHIO)
+
def GetParameters(self, proto):
"""Returns list of parameters for this protocol."""
--
1.5.6.3
More information about the Telepathy-commits
mailing list