Difference between revisions of "Daemons and Services/es"

From Lazarus wiki
Jump to navigationJump to search
Line 86: Line 86:
  
 
Antes de que puedas crear una aplicación en la modalidad de Servicio o Demonio es preciso asegurarse de que el paquete "lazdaemon" de encuentra instalado en Lazarus.
 
Antes de que puedas crear una aplicación en la modalidad de Servicio o Demonio es preciso asegurarse de que el paquete "lazdaemon" de encuentra instalado en Lazarus.
 +
 +
=Ejemplo=
 +
 +
Puedes encontrar un ejemplo simple de todo esto en el directorio examples/cleandir/ de la instalación de Lazarus. Lee el fichero README.txt que se encuentra allí.

Revision as of 15:50, 29 October 2014

¿Qué son demonios, servicios y agentes?

Las diferentes denominaciones varían segun el sistema operativo, recibiendo el nombre de demoniosdaemons en sistemas Unix, servicios servicesen sistemas Windows y agentes agents para Mac OS X. El concepto es que son programas que se ejecutan sin interacción del usuario, incluso sin que este se valide. Aunque su nomenclatura difiere su función viene a ser similar: por ejemplo, los servidores www o ftp se llaman demonios bajo Linux y servicios bajo Windows. Debido a que no interactúan con el usuario directamente cierran sus descriptores stdin (entrada estandar), su stdout (salida estandar) y stderr (estandar error) a su inicio.

Con FreePascal/Lazarus se pueden escribir estos demonios/servicios que son independientes de la plataforma mediante el uso del paquete lazdaemon. Para evitar conflictos de nombres con los componentes de Delphi estas clases se han denominado 'daemons'.

Instalación de LazDaemon

Antes de comenzar a gestionarlos dentro de Lazarus es necesario instalar el paquete LazDaemon. Bien sea vía Componentes/Configurar paquetes instalados o bien abriendo/instalando el fichero .lpk directamente que se encuentra en la ubicación: lazarus/components/daemon/lazdaemon.lpk.

Este paquete instala algunos componentes nuevos y un menú de elementos en el IDE.

Classes

TCustomDaemon

TCustomDaemon es un descendiente de TDataModule que realiza todo el trabajo. Puede haber varias clases TCustomDaemons classes y/o instancias corriendo al mismo tiempo y en el el mismo proceso (multi ebra o hilo (threaded)).

TCustomDaemonApplication

TCustomDaemonApplication es un descendiente de TCustomApplication que crea TCustomDaemons. No necesita cambios. Corre bajo Windows hasta que recibe la llamada de Stopo bajo Linux hasta que recibe la señal TERM (Term Signal).

TDaemonMapper

Este componente maneja el registro de servicio. Cada instancia necesita una entrada en la propiedad DaemonDefs.

Demonios - Paso a Paso

  • Cuando el demonio arranca se analizan sintácticamente los parámetros de la línea de mandatos. Los siguientes están predefinidos:
    • -i --install: registra el demonio. No tiene efecto bajo unix.
    • -u --uninstall: elimina el registro del demonio. No tiene efecto bajo unix.
    • -r --run: arranca el demonio (daemon). Windows realiza esto normalmente por si mismo.
  • Crear el TDaemonMapper
  • Crear un TCustomDaemon por cada entrada de DaemonDefs.
  • instala(install), uninstall(desinstala) o arranca cada instancia.
  • if run: arranca cada instancia en cada propia hebra (hilo o thread) y espera la señal de Stop(Windows) o Term (Linux/Unix).

Métodos del demonio

Start

Llamado para arrancar (start) el demonio. Este método debe retornar inmediatamente True.

Stop

LLamado para detener (stop) el demonio. Este método debe retornar inmediatamente True.

Shutdown

Llamado para matar (kill) el demonio. Este método debe parar el demonio inmediatamente y retornar inmediatamente True. No se dispara bajo Linux. Linux simplemente mata el demonio.

Pause

Llamado para pausar el demonio. Este método debe retornar inmediatamente True. No se dispara bajo Linux porque el núcleo (kernel) detiene completamente el demonio en STOP y lo continúa con CONT.

Continue

Llamado cuando el demonio debe continuar tras una pausa. Este método debe retornar inmediatamente True. No se dispara bajo Linux.

Install

Llamado cuando se registra un demonio como servicio de Windows. Este método debe retornarTrue si el registro es completado correctamente.

Uninstall

Llamado cuando un demonio es eliminado del registro como servicio de Wndows. Este método debe retorna True si la eliminación del registro se completa correctamente.

AfterUnInstall

Llamado despues de que el demonio es quitado del registro como servicio de Windows. Este método debe retornar True si dicha llamada es satisfactoria.

HandleCustomCode

Llamada cuando se envía una señal especial al demonio. Este método retorna True si el resultado es satisfactorio.

Aclaraciones antes de comenzar

Antes de que puedas crear una aplicación en la modalidad de Servicio o Demonio es preciso asegurarse de que el paquete "lazdaemon" de encuentra instalado en Lazarus.

Ejemplo

Puedes encontrar un ejemplo simple de todo esto en el directorio examples/cleandir/ de la instalación de Lazarus. Lee el fichero README.txt que se encuentra allí.