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