Rename discovery module to `zeroconf'

portnov [2009-02-27 08:03:57]
Rename discovery module to `zeroconf'
Filename
discovery.py
test.py
diff --git a/discovery.py b/discovery.py
deleted file mode 100644
index 1e53732..0000000
--- a/discovery.py
+++ /dev/null
@@ -1,129 +0,0 @@
-import sys
-import signal
-import threading
-import gobject
-import dbus
-from dbus.mainloop.glib import DBusGMainLoop
-import avahi
-
-from centrixd import data
-import machines
-
-hosts = []
-services = {}
-
-def err(str):
-    print "Error:", str
-
-# Shorter names of services
-servicenames = {'_ssh._tcp':  'ssh',
-                '_http._tcp': 'web',
-                '_ftp._tcp':  'ftp',
-                '_workstation._tcp': 'machine',
-                '_pulse-server._tcp':  'pulseaudio',
-                '_nameserver._udp': 'dns'}
-
-class Browser(threading.Thread):
-    "Browse network for services, using zeroconf/avahi"
-
-    def __init__(self,group=None,target=None,name=None,args=(), kwargs=None,verbose=None):
-        threading.Thread.__init__(self)
-        self.types = args
-        self.done = {}
-        for type in args:
-            self.done[type] = False
-
-    def _all_done(self):
-        for v in self.done.values():
-            if not v:
-                return False
-        return True
-
-    def _interface_for_type(self,type):
-        return dbus.Interface(self.bus.get_object(avahi.DBUS_NAME,
-                self.server.ServiceBrowserNew(avahi.IF_UNSPEC,
-                        avahi.PROTO_UNSPEC,
-                        type, 'local', dbus.UInt32(0))),
-                avahi.DBUS_INTERFACE_SERVICE_BROWSER)
-
-    def browse(self,types):
-        print "Browsing for:", types
-        self.bus = dbus.SystemBus()
-        self.server = dbus.Interface(self.bus.get_object(avahi.DBUS_NAME, avahi.DBUS_PATH_SERVER),avahi.DBUS_INTERFACE_SERVER)
-        for type in types:
-            b = self._interface_for_type(type)
-            b.connect_to_signal('ItemNew', self.add_service)
-            b.connect_to_signal('ItemRemove', self.remove_service)
-
-    def add_service(self, interface,proto,name,stype,domain,flags):
-        print "Found service:", name
-        self.server.ResolveService(int(interface), int(proto),
-             name,stype,domain, avahi.PROTO_UNSPEC, dbus.UInt32(0),
-             reply_handler = self.listener.new_service,
-             error_handler = err)
-        self.done[stype] = True
-        if self._all_done():
-            self.lock.release()
-
-    def set_listener(self, ob):
-        self.listener = ob
-
-    def remove_service(self,iface,proto,name,stype,domain,flags):
-        print "Removing service", name
-
-    def quit(self):
-        print "Stop discovery."
-        self.ml.quit()
-        try:
-            self.lock.release()
-        except:
-            pass
-        return False
-
-    def run(self):
-        DBusGMainLoop(set_as_default=True)
-        if self.timeout:
-            gobject.timeout_add(self.timeout,self.quit)
-        self.browse(self.types)
-        self.ml = gobject.MainLoop()
-        gobject.threads_init()
-        self.ml.run()
-
-class ZeroconfListener(object):
-    def new_service(self, iface,proto,name,stype,domain, host, aproto,addr, port, txt,flags):
-        global services
-        global hosts
-
-        if stype == '_workstation._tcp':
-            host = machines.Host()
-            host.hostname = name.split()[0]
-            host.ip = addr
-            hosts.append(host)
-            return
-
-        sname = servicenames[stype]
-        svc = data.Service()
-        svc.name = name
-        svc.ip = addr
-        svc.port = port
-        services[sname] = svc
-#         print "services[%s] = %s" % (sname, svc)
-
-def discover(services=('_ssh._tcp','_workstation._tcp','_nameserver._udp'),timeout=None):
-    """Discover services of given types via zeroconf.
-    Returns (blocked) lock, which is released when all services are discovered."""
-    global browser
-    lock = threading.Lock()
-    lock.acquire()
-    listener = ZeroconfListener()
-    browser = Browser(args=services)
-    browser.timeout = timeout
-    browser.lock = lock
-    browser.set_listener(listener)
-    browser.start()
-    return lock
-
-def stop():
-    "Cancel discovery"
-    global browser
-    browser.quit()
diff --git a/test.py b/test.py
index a93ed78..fd20e47 100755
--- a/test.py
+++ b/test.py
@@ -9,7 +9,7 @@ from twisted.internet.protocol import Factory
 from twisted.protocols.basic import LineReceiver
 from twisted.internet import reactor

-import discovery
+import zeroconf
 import templates
 import configs
 import configsets
@@ -23,7 +23,7 @@ import machines
 def on_sigint(signum, frame):
     global reactor
     print "Got SIGINT"
-    discovery.stop()
+    zeroconf.stop()
     reactor.stop()
 #     sys.exit()

@@ -43,19 +43,19 @@ class Centrixd(LineReceiver):
 #####################################
 # Setup

-lock = discovery.discover()
+lock = zeroconf.discover()

-discovery.services['proxy'] = data.Service()
-discovery.services['proxy'].ip = '192.168.32.3'
-discovery.services['proxy'].port = 3128
-discovery.services['gateway'] = data.Service()
-discovery.services['gateway'].ip = '192.168.32.1'
+zeroconf.services['proxy'] = data.Service()
+zeroconf.services['proxy'].ip = '192.168.32.3'
+zeroconf.services['proxy'].port = 3128
+zeroconf.services['gateway'] = data.Service()
+zeroconf.services['gateway'].ip = '192.168.32.1'

 machine = machines.Host()
 machine.ip = '192.168.1.2'
 machine.hostname = 'portnov'

-templates.services = discovery.services
+templates.services = zeroconf.services
 templates.machine = machine

 print "Waiting for discovery..."
@@ -63,7 +63,7 @@ lock.acquire()

 # print services
 print "Found hosts:"
-for host in discovery.hosts:
+for host in zeroconf.hosts:
     print host

 # Read template
ViewGit