Daemons and Services/pt

From Lazarus-ccr

Jump to: navigation, search

English (en) Português (pt)

Contents

[edit] 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'.

[edit] Classes

[edit] 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).

[edit] 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.

[edit] TDaemonMapper

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

[edit] 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.

[edit] Métodos Daemon

[edit] Start

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

[edit] Stop

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

[edit] 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.

[edit] 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.

[edit] 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.

[edit] Install

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

[edit] Uninstall

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

[edit] AfterUnInstall

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

[edit] HandleCustomCode

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

[edit] Exemplo

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