[Telepathy-commits] [telepathy-salut/master] Add service resolving
Sjoerd Simons
sjoerd.simons at collabora.co.uk
Mon Sep 1 12:32:45 PDT 2008
---
tests/twisted/avahitest.py | 45 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 44 insertions(+), 1 deletions(-)
diff --git a/tests/twisted/avahitest.py b/tests/twisted/avahitest.py
index aa7041c..f0b8583 100644
--- a/tests/twisted/avahitest.py
+++ b/tests/twisted/avahitest.py
@@ -14,12 +14,49 @@ def get_host_name():
avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER)
return server.GetHostName()
+def txt_get_key(txt, key):
+ for x in txt:
+ if dbus.Byte('=') in x:
+ (rkey, value) = avahi.byte_array_to_string(x).split('=')
+ if rkey == key:
+ return value
+
+ return None
+
+class AvahiService:
+ def __init__(self, event_queue, bus, server,
+ interface, protocol, name, type, domain, aprotocol, flags):
+
+ self.event_queue = event_queue
+
+ resolver_path = server.ServiceResolverNew(interface,
+ protocol, name, type, domain, aprotocol, flags)
+ resolver_obj = bus.get_object(avahi.DBUS_NAME, resolver_path)
+ resolver = dbus.Interface(resolver_obj,
+ avahi.DBUS_INTERFACE_SERVICE_RESOLVER)
+
+ resolver.connect_to_signal('Found', self._service_found)
+ resolver.connect_to_signal('Failed', self._service_failed)
+
+ def _service_found(self, interface, protocol, name, stype, domain,
+ host_name, aprotocol, pt, port, txt, flags):
+
+ e = Event('service-resolved', service = self,
+ interface = interface, protocol = protocol, name = name,
+ stype = stype, host_name = host_name, aprotocol = aprotocol,
+ pt = pt, port = port, txt = txt, flags = flags)
+
+ self.event_queue.append(e)
+
+ def _service_failed(self, error):
+ e = Event('service-failed', service = self, error = error)
+ self.event_queue.append(e)
+
class AvahiListener:
def __init__(self, event_queue):
self.event_queue = event_queue
self.bus = dbus.SystemBus()
-
self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME,
avahi.DBUS_PATH_SERVER), avahi.DBUS_INTERFACE_SERVER)
self.browsers = []
@@ -51,3 +88,9 @@ class AvahiListener:
browser.connect_to_signal('ItemRemoved', self._service_removed_cb)
self.browsers.append(browser)
+
+ def resolver_for_service(self, event):
+ return AvahiService(self.event_queue, self.bus, self.server,
+ event.interface, event.protocol, event.name, event.stype,
+ event.domain, event.protocol, 0)
+
--
1.5.6.3
More information about the Telepathy-commits
mailing list