Daemons and Services/pt

From Free Pascal wiki
Revision as of 23:28, 18 December 2007 by Junior (talk | contribs)
Jump to navigationJump to search

English (en) español (es) français (fr) polski (pl) português (pt) русский (ru)

O que são daemons e serviços ?

Daemons Unix e serviços do Windows são programas rodando sem interação do usuário. Por exempo servidores www ou ftp são chamados de daemons no linux e serviços no windows. Porque eles não interagem com o usuário diretamente, eles fecham seus descritores stdin, stdout, stderr quando iniciam.

Com Free Pascal, Lazarus é possível escrever estes daemons/services independente da plataforma através do pacote lazdaemon. Para evitar conflitos de nome com os componentes Delphi os componentes desta classe são chamadas de 'daemons'.

Classes

TCustomDaemon

Este é um descendente do TDataModule que habilita todo o trabalho. Este pode ter diversas classes TCustomDaemons e/ou instâncias executando ao mesmo tempo e no mesmo processo (multi threaded).

TCustomDaemonApplication

Este é um descendente da TCustomApplication que cria os TCustomDaemons. Este não precisa de mudanças. Ele executa no Windows até receber a chamada de Stop (parada) ou no linux até receber o sinal TERM.

TDaemonMapper

Este componente é encarregado do registro do serviço. Cada instância precisa de uma entrada na propriedade DaemonsDefs.

Daemon - Passo a Passo

  • Quando o daemon é inicializado os comandos da linha de comando são traduzidos. Os seguintes são pré-definidos:
    • -i --install: registra o daemon. Não tem nenhum efeito sob unix.
    • -u --uninstall: remove o daemon. Não tem nenhum efeito sob unix.
    • -r --run: inicia o daemon. O Windows normalmente isto, ele mesmo.
  • Criar o TDaemonMapper
  • Criar um TCustomDaemon para cada entrada do DaemonDefs.
  • instalar, remover ou executar cada instância.
  • se executar: inicializar cada instância na sua própria thread e então aguardar pelo sinal de STOP/TERM.

Métodos Daemon

Start

Chamado quando daemon deve iniciar. Este método deve retornar imediatamente com True.

Stop

Chamado quando daemon deve parar. Este método deve retornar imediatamente com True.

Shutdown

Chamado quando o daemon deve ser killed (morto). este método deve parar o daemon imediatamente e retornar com True. Este não é desencadeado no Linux. Linux simplesmente mata o daemon.

Pause

Chamado quando o daemon deve pausar. Este método deve retornar imediatamente com True. No Linux este não é desencadeado porque o kernek pára completamente o daemon no STOP e continua ele no CONT.

Continue

Chamado quando o daemon deve ser continuar depois da pausa. Este método deve retornar imediatamente com True. No Linux este não é desencadeado.

Install

Chamado quando o daemon é registrado como um serviço do Windows. Este método deve retornar True' caso haja sucesso.

Uninstall

Chamado quando o daemon é "des-registrado" como um serviço do Windows. Este método deve retornar True' caso hoje sucesso.

AfterUnInstall

Chamado depois que o daemon foi "des-registrado" como um serviço do Windows. Este método deve retornar True' quando houver sucesso.

HandleCustomCode

Chamado quando um sinal especial foi enviado para o daemon. Este método deve retornar True caso haja sucesso.

Exemplo

Há um exemplo simples no diretório examples/cleandir/. Leia o arquivo README.TXT.