Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 246

Uso de memcache para avahi

Ver diferencias:

controlies/trunk/applications/controlies/controllers/gestion.py
@auth.requires_login()
def getLTSPStatus():
import memcache
shared = memcache.Client(['127.0.0.1:11211'], debug=0)
fileNameServers = shared.get('fileNameServers')
fileNameTeachers = shared.get('fileNameTeachers')
try:
f = open('/tmp/controlIES.ltpsSevers', 'r')
f = open(fileNameServers, 'r')
computers = f.read().split(" ")
computers.sort()
except:
computers=()
try:
f = open('/tmp/controlIES.ltpsTeachers', 'r')
f = open(fileNameTeachers, 'r')
teachers = f.read().split(" ")
teachers.sort()
except:
controlies/trunk/applications/controlies/avahiClient.py
import dbus, gobject, avahi
from dbus import DBusException
from dbus.mainloop.glib import DBusGMainLoop
import tempfile, memcache
TYPE = "_workstation._tcp"
typeComputers = "_workstation._tcp"
typeTeachers = "_controlaula._tcp"
fileNameServers = '/tmp/controlIES.ltpsSevers'
fileNameTeachers = '/tmp/controlIES.ltpsTeachers'
fs = tempfile.NamedTemporaryFile(delete=False, prefix='controlies_')
ft = tempfile.NamedTemporaryFile(delete=False, prefix='controlies_')
def newItem(interface, protocol, name, stype, domain, flags):
fileNameServers = fs.name
fileNameTeachers = ft.name
def newComputer(interface, protocol, name, stype, domain, flags):
computerToAdd = name.split(" ")
f = open(fileNameServers, 'a')
f.write(computerToAdd[0]+" ")
f.close()
#print "Found service '%s' type '%s' domain '%s' " % (name, stype, domain)
def removeItem(interface, protocol, name, stype, domain, flags):
def removeComputer(interface, protocol, name, stype, domain, flags):
computerToDelete = name.split(" ")
f = open(fileNameServers, 'r')
computersList = f.read()
f.close()
computersList = computersList.replace(computerToDelete[0]+" ","")
f = open(fileNameServers, 'w')
f.write(computersList)
f.close()
#print "Found Remove service '%s' type '%s' domain '%s' " % (name, stype, domain)
def newTeacher(interface, protocol, name, stype, domain, flags):
computerToAdd = name.split(" ")
f = open(fileNameTeachers, 'a')
f.write(computerToAdd[0]+" ")
f.close()
def removeTeacher(interface, protocol, name, stype, domain, flags):
computerToDelete = name.split(" ")
f = open(fileNameTeachers, 'r')
computersList = f.read()
f.close()
computersList = computersList.replace(computerToDelete[0]+" ","")
f = open(fileNameTeachers, 'w')
f.write(computersList)
f.close()
shared = memcache.Client(['127.0.0.1:11211'], debug=0)
shared.set('fileNameServers', fileNameServers)
shared.set('fileNameTeachers', fileNameTeachers)
loop = DBusGMainLoop()
bus = dbus.SystemBus(mainloop=loop)
server = dbus.Interface( bus.get_object(avahi.DBUS_NAME, '/'), 'org.freedesktop.Avahi.Server')
sbrowser = dbus.Interface(bus.get_object(avahi.DBUS_NAME, server.ServiceBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, TYPE, 'local', dbus.UInt32(0))), avahi.DBUS_INTERFACE_SERVICE_BROWSER)
sbrowser.connect_to_signal("ItemNew", newItem)
sbrowser.connect_to_signal("ItemRemove", removeItem)
sbrowser = dbus.Interface(bus.get_object(avahi.DBUS_NAME, server.ServiceBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, typeComputers, 'local', dbus.UInt32(0))), avahi.DBUS_INTERFACE_SERVICE_BROWSER)
sbrowser.connect_to_signal("ItemNew", newComputer)
sbrowser.connect_to_signal("ItemRemove", removeComputer)
sbrowser = dbus.Interface(bus.get_object(avahi.DBUS_NAME, server.ServiceBrowserNew(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, typeTeachers, 'local', dbus.UInt32(0))), avahi.DBUS_INTERFACE_SERVICE_BROWSER)
sbrowser.connect_to_signal("ItemNew", newTeacher)
sbrowser.connect_to_signal("ItemRemove", removeTeacher)
gobject.MainLoop().run()

Exportar a: Unified diff