------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ /** * Clase para el manejo de los servidores de YATTA. * * @access public */ class YATTA_Servidor { /** * Devuelve el id de un servidor a partir del nombre. * * @param DB $db Conexion a la base de datos. * @param string $nombre Nombre del servidor. * * @return mixed * @access public */ function obtenerId($db, $nombre) { $res = $db->query('SELECT s.id FROM yatta.servidores AS s WHERE s.nombre = '.$db->quote($nombre)); // Si hay error lo devuelve. if (DB::isError($res)) { return $res; } $res = $res->fetchRow(DB_FETCHMODE_ASSOC); return $res['id']; } /** * Agrega un proceso a la cola de procesos del servidor * * @param DB $db Conexion a la base de datos. * @param int $id Identificador del servidor. * * @return mixed * @access public */ function agregarProceso($db, $id) { return $db->query(' UPDATE yatta.servidores SET procesos = procesos + 1 WHERE id = '. $id); } /** * Quita un proceso a la cola de procesos del servidor * * @param DB $db Conexion a la base de datos. * @param int $id Identificador del servidor. * * @return mixed * @access public */ function quitarProceso($db, $id) { return $db->query(' UPDATE yatta.servidores SET procesos = procesos - 1 WHERE id = '. $id); } /** * Devuelve el estado actual del servidor. * -1 = Error (Mas de un proceso en ejecucion) * 0 = Idle * n = PID del proceso en ejecucion * * @param DB $db Conexion a la base de datos. * @param string $nombre Nombre del servidor. * * @return mixed * @access public */ function obtenerEstado($db, $nombre) { $res = $db->query("SELECT p.pid AS pid FROM yatta.procesos AS p, yatta.servidores AS s WHERE s.nombre = '$nombre' AND p.server = s.id AND p.status = 1"); // Si hay error lo devuelve. if (DB::isError($res)) { return $res; } if ($res->numRows() > 1) { return -1; } elseif ($res->numRows() == 0) { return 0; } else { $res = $res->fetchRow(DB_FETCHMODE_ASSOC); return $res['pid']; } } } ?>