summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Kukkonen <jussi.kukkonen@intel.com>2013-03-09 12:45:34 +0200
committerJussi Kukkonen <jussi.kukkonen@intel.com>2013-03-09 12:52:08 +0200
commite8fb670bf67c958d6913efcfbf9c0fe61e07a8e5 (patch)
tree168bd25043aa8c1983b4eb08fb9ca4438a9cd3e3
parent3b0fe09bdcf733aba85fd442dfe4ef4692c06b08 (diff)
downloaddleyna-control-e8fb670bf67c958d6913efcfbf9c0fe61e07a8e5.tar.gz
[UPnP] Handle GetServers() asynchronously
The call won't take long normally, and the app isn't really useful until it returns. Nevertheless, D-Bus calls should still be asynchronous. Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-rw-r--r--src/msd/msd_upnp.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/msd/msd_upnp.py b/src/msd/msd_upnp.py
index 63bafc2..8aeed69 100644
--- a/src/msd/msd_upnp.py
+++ b/src/msd/msd_upnp.py
@@ -67,13 +67,16 @@ class State(object):
return (folderName, image)
- def __init_servers(self):
- for i in self.__manager.GetServers():
+ def __on_get_servers_reply (self, servers):
+ for path in servers:
try:
- self.__servers[i] = State.__create_server_tuple(i)
- except dbus.exceptions.DBusException:
+ self.__servers[path] = State.__create_server_tuple(path)
+ except Exception:
pass
+ def __on_get_servers_error (self, error):
+ print "Manager.GetServers() failed: %s" % error
+
def found_server(self, path):
if not path in self.__servers:
try:
@@ -100,7 +103,8 @@ class State(object):
self.__manager.connect_to_signal("FoundServer", self.found_server)
self.__manager.connect_to_signal("LostServer", self.lost_server)
- self.__init_servers()
+ self.__manager.GetServers(reply_handler=self.__on_get_servers_reply,
+ error_handler=self.__on_get_servers_error)
def set_lost_server_cb(self, callback):
self.__lost_server_cb = callback