*/
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
*
* @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