Пример #1
0
class Metaserver(object):
    def __init__(self, pathbase="."):
        """
        * Crea la estructura de directorios del metaservidor
            * Esto incluye el fichero de configuracion necesario para hacer
              funcionar al bugoso smsd
        * Inicia el monitor de dispositivos
            Maneja los eventos de conexion/desconexion
                Pide a farm que instancie y elimine servidores
            Desencadena eventos
        """

        self.servers = {}
        self.sheeps = {}
        self.farm = Farm() 
        self.pathbase = os.path.abspath(pathbase)

        self.device_monitor = Monitor(self.configure_device,
            self.remove_device)
        self.device_monitor.loop.run()


    @Auto_verbose(1, 1)
    def configure_device(self, device_path, protocol, model=None):
        info("Metaserver:configured:%s, %s, %s" % (device_path, protocol,
            model))
        server = Server(self, device_path, protocol, model)
        sheep = self.farm.get_sheep(server.send_sms)
        self.servers[device_path] = server
        self.sheeps[device_path] = server
        self.farm.put_sheep(sheep)
        server.start_smsd()
        sheep.start()
        return


    def remove_device(self, device_path):
        info("Metaserver:removed:%s" % device_path)
        server = self.servers[device_path]
        server.close()
        del(self.servers[device_path])
        return