root/controlies/Utils/avahiClient.py @ 90
89 | manumora | import dbus, gobject, avahi
|
|
from dbus import DBusException
|
|||
from dbus.mainloop.glib import DBusGMainLoop
|
|||
90 | manumora | import threading
|
|
89 | manumora | ||
90 | manumora | class avahiClient(threading.Thread):
|
|
89 | manumora | ||
names = []
|
|||
90 | manumora | def __init__(self):
|
|
threading.Thread.__init__(self)
|
|||
89 | manumora | ||
90 | manumora | def run(self):
|
|
89 | manumora | loop = DBusGMainLoop()
|
|
bus = dbus.SystemBus(mainloop=loop)
|
|||
self.server = dbus.Interface(bus.get_object(avahi.DBUS_NAME, '/'), 'org.freedesktop.Avahi.Server')
|
|||
sbrowser = dbus.Interface(bus.get_object(avahi.DBUS_NAME, self.server.ServiceBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, "_workstation._tcp", 'local', dbus.UInt32(0))), avahi.DBUS_INTERFACE_SERVICE_BROWSER)
|
|||
sbrowser.connect_to_signal("ItemNew", self.myhandler)
|
|||
self.loop = gobject.MainLoop()
|
|||
self.loop.run()
|
|||
90 | manumora | ||
89 | manumora | def service_resolved(self,*args):
|
|
#print args
|
|||
print 'service resolved'
|
|||
print 'name:', args[2]
|
|||
print 'address:', args[7]
|
|||
print 'port:', args[8]
|
|||
90 | manumora | #print args
|
|
89 | manumora | self.names.append(args[2])
|
|
#self.loop.quit()
|
|||
def print_error(self,*args):
|
|||
print 'error_handler'
|
|||
print args[0]
|
|||
def myhandler(self,interface, protocol, name, stype, domain, flags):
|
|||
#print "Found service '%s' type '%s' domain '%s' " % (name, stype, domain)
|
|||
if flags & avahi.LOOKUP_RESULT_LOCAL:
|
|||
#print "que es esto"
|
|||
pass
|
|||
self.server.ResolveService(interface, protocol, name, stype, domain, avahi.PROTO_UNSPEC, dbus.UInt32(0), reply_handler=self.service_resolved, error_handler=self.print_error)
|
|||
def getList(self):
|
|||
return self.names
|
|||
def kill(self):
|
|||
self.loop.quit()
|