feat(horse): adicionar selector HORSE_PROVIDER_NGHTTP2 e hooks de ciclo de vida - #555
Conversation
|
Obrigado por fechar o #545 e reabrir este PR rebaseado e com escopo bem menor. A estrutura agora está muito mais próxima do que precisamos, mas encontrei alguns pontos a ajustar antes da aprovação:
Com esses ajustes, o PR ficará isolado e pronto para a revisão final da integração opt-in do provider. |
f24380f to
e55fb03
Compare
|
Obrigado pela revisão e pelas indicações dadas. Todos os ajustes foram aplicados e enviados (e55fb03, rebaseado sobre 0bc2ab7).
── 19 compile-guard negative cases (Horse.pas) ───────────────────────── Cada teste verifica a mensagem específica, não apenas o código de saída — só o status passaria em qualquer quebra não relacionada e continuaria passando se a guarda fosse removida. Ressalva importante: esses testes vivem no repositório do provider (horse-provider-nghttp2, samples/tests/build-fpc.sh, estágio 19), não neste PR — o diff aqui não contém teste algum. Testes de guarda são de tempo de compilação, então não são expressáveis em DUnitX; precisariam de um script próprio na suíte do Horse. |
e55fb03 to
5e54ce0
Compare
|
Rebase realizado sobre o master atual (�3f3f69).\n\nDurante a revisão, o provider externo já estava na versão 1.9.3 e passou a fornecer as units FPC de Daemon, LCL e HTTPApplication. Atualizei o seletor para usar as units e classes marcadoras atuais no commit 5e54ce0, removendo as rejeições que haviam ficado obsoletas.\n\nValidação:\n- Delphi 11, 12 e 13: console, VCL e daemon — 9/9 compilações;\n- FPC 3.2.2: console/HTTPApplication e daemon — 2/2 compilações;\n- guardas negativas NGHTTP2+IOCP, NGHTTP2+HttpSys e NGHTTP2+NoProvider rejeitadas corretamente;\n- matriz geral: 64/64 cenários Delphi e 8/10 FPC; somente Apache e Apache+Radix falharam por ausência das bibliotecas nativas httpd24/APR na imagem, igualmente fora deste PR.\n\nO branch está atualizado e o PR permanece MERGEABLE/CLEAN. |
Adds the opt-in define HORSE_PROVIDER_NGHTTP2 (and strict-mode alias HORSE_PROVIDER_NGHTTP2_REQUIRED) to Horse.pas so the nghttp2 HTTP/2 transport can be selected without touching any existing provider code. horse-provider-nghttp2 supplies TListen, DoStartListenFunc, and DoStopListenFunc; Horse.pas routes to them when the define is set. All other providers (Indy, fphttpserver, CrossSocket, mORMot, ICS, HTTP.sys, epoll, IOCP, host-managed) are completely unaffected. Without the define this file compiles identically to the upstream original on both Delphi and Lazarus/FPC. Supersedes closed PR HashLoad#545.
5e54ce0 to
44f8440
Compare
O que este PR faz
Adiciona uma directiva de compilação opcional ao
Horse.pas: