X-Git-Url: https://git.llucax.com/mecon/yatta.git/blobdiff_plain/be82111e27a9d9b492bdde542a283624c752b3fc..0a4eb0ea61d7f6423f94933553fe3a79537cc6b9:/lib/YATTA/Servidor.php?ds=sidebyside diff --git a/lib/YATTA/Servidor.php b/lib/YATTA/Servidor.php index d91ddd1..694f39a 100644 --- a/lib/YATTA/Servidor.php +++ b/lib/YATTA/Servidor.php @@ -31,6 +31,26 @@ $Id$ */ 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 * @@ -41,11 +61,61 @@ class YATTA_Servidor { * @access public */ function agregarProceso($db, $id) { - $res = $db->query(' + return $db->query(' UPDATE yatta.servidores SET procesos = procesos + 1 WHERE id = '. $id); - return $res; } + + /** + * 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']; + } + + } + } ?> \ No newline at end of file