]> git.llucax.com Git - mecon/yatta.git/blobdiff - lib/YATTA/Servidor.php
BugFix en YATTA_DB
[mecon/yatta.git] / lib / YATTA / Servidor.php
index d91ddd14070240b336b72b392dd8973cd184a302..694f39aeba88630f3cc76d203d7624cde6cb6d68 100644 (file)
@@ -31,6 +31,26 @@ $Id$
  */
 class YATTA_Servidor {
 
  */
 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
      *
     /**
      * Agrega un proceso a la cola de procesos del servidor
      *
@@ -41,11 +61,61 @@ class YATTA_Servidor {
      * @access public
      */
     function agregarProceso($db, $id) {
      * @access public
      */
     function agregarProceso($db, $id) {
-        $res = $db->query('
+        return  $db->query('
                 UPDATE yatta.servidores
                 SET procesos = procesos + 1
                 WHERE id = '. $id);
                 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
 }
 ?>
\ No newline at end of file