/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package servidor.comunicaciones;

import java.util.logging.Level;
import servidor.*;
import servidor.clientes.Monitor;

public class MensajeMonitor extends Mensaje {

   public static final int CONEXION = 201;
   public static final int REACTIVAR_TICKETS = 202;
   public static final int ESTOY_VIVO = 210;

   public MensajeMonitor(String str, org.quickserver.net.server.ClientHandler handler) {
      super(str, handler);
      urgente = (codigo == ESTOY_VIVO);
   }

   @Override
   public void procesar() {
      try {
         switch (codigo) {
            case CONEXION:
               nuevoMonitor();
               break;
            case REACTIVAR_TICKETS:
               GestorColas.getGestor().reactivarTicketsPorMonitor(this);
               break;
            case ESTOY_VIVO:
               GestorColas.getGestor().monitorVivo(((DatosCliente) handler.getClientData()).cliente.ipAdd);
               break;
            }

      } catch (Exception exc) {
         ServidorMain.log.log(Level.WARNING, "Error procesando mensaje de Monitor:\n{0}\n{1}", new Object[]{this.toString(), exc.getMessage()});
      }
   }

   void nuevoMonitor() {
      try {
         Monitor mo = new Monitor(this);
         GestorColas.getGestor().nuevoMonitor(mo);
         mo.nombre = this.params[0];
         DatosCliente dc = (DatosCliente) handler.getClientData();
         dc.cliente = mo;
         System.out.println("Nuevo Monitor: " + mo);
         
      } catch (Exception exc) {
         ServidorMain.log.info(exc.getMessage());
      }
   }
}
