Skip to content

Feature/lifecycle hooks - #514

Merged
regyssilveira merged 2 commits into
HashLoad:masterfrom
regyssilveira:feature/lifecycle-hooks
Jul 10, 2026
Merged

Feature/lifecycle hooks#514
regyssilveira merged 2 commits into
HashLoad:masterfrom
regyssilveira:feature/lifecycle-hooks

Conversation

@regyssilveira

Copy link
Copy Markdown
Contributor

Implementação de Lifecycle Hooks (onRequest, preParsing, preValidation, onSend, onResponse)

Descrição

Este Pull Request introduz suporte completo e nativo a ganchos de ciclo de vida (Lifecycle Hooks) no ecossistema Horse. Esses ganchos permitem interceptar e atuar sobre a requisição e a resposta em 5 fases distintas, garantindo flexibilidade para auditoria, modificações em trânsito e tratamento de erros.

Funcionalidades

  1. onRequest: Executado antes de qualquer processamento da rota ou middleware.
  2. preParsing: Executado antes do parser de requisições de middlewares nativos.
  3. preValidation: Executado logo após a resolução da rota ativa na árvore de rotas, mas antes do primeiro middleware/endpoint local.
  4. onSend: Executado logo antes de o payload final (string ou bytes) ser despachado no socket, permitindo modificação em trânsito.
  5. onResponse: Executado na saída de forma garantida (via bloco try..finally centralizado) de forma universal para 100% dos provedores (Indy, HttpSys, IOCP, CrossSocket, CGI, Apache, ISAPI).

Compatibilidade de Roteadores

Os ganchos foram integrados nativamente em ambos os roteadores centrais do framework:

  • Roteador Padrão (THorseRouterTree)
  • Radix Router (THorseRadixRouter)

Validação e Qualidade

  • Testes de Integração: Adicionada a suíte Tests.Integration.LifecycleHooks.pas para validar os 5 ganchos, interrupção prematura e manipulação do payload.
  • Resultados: Passou 100% em todas as 24 matrizes de testes automatizados (Delphi 10 Seattle, 11 Alexandria, 12 Athens e 13 Florence sob provedores Default, HttpSys e IOCP, com e sem Radix).
  • Portabilidade: Validada a compilação nativa cruzada para Linux 64-bit (dcclinux64.exe).
  • Exemplos: Adicionados projetos de console auditáveis em Delphi e Lazarus (Windows/Linux) sob a pasta samples/.

@regyssilveira
regyssilveira merged commit 6b0997c into HashLoad:master Jul 10, 2026
@regyssilveira
regyssilveira deleted the feature/lifecycle-hooks branch July 10, 2026 14:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant