Skip to content

feat: add horse-provider-nghttp2 provider (HTTP/2 + gRPC, Delphi + FPC) - #545

Open
freitasjca wants to merge 6 commits into
HashLoad:masterfrom
freitasjca:master
Open

feat: add horse-provider-nghttp2 provider (HTTP/2 + gRPC, Delphi + FPC)#545
freitasjca wants to merge 6 commits into
HashLoad:masterfrom
freitasjca:master

Conversation

@freitasjca

Copy link
Copy Markdown
Contributor

Summary

  • Adds HORSE_PROVIDER_NGHTTP2 compiler-define support to Horse.pas — the same pattern used by CrossSocket, mORMot, ICS, epoll and IOCP
  • Legacy alias HORSE_NGHTTP2 maps to the canonical define (backwards-compatible)
  • Compile-time FATAL guards for all impossible combinations (host-managed + self-hosted, mutual exclusivity between providers)
  • uses routing for Console, VCL, and Daemon app shapes on both Delphi and FPC
  • THorseProvider alias resolves to THorseProviderNghttp2 when the define is active
  • README.md and README.pt-BR.md: table row + installation note (libnghttp2 ≥ 1.59, Boss install, FPC trunk 3.3.1 requirement)

External dependency

horse-provider-nghttp2 + Delphi-nghttp2 — installed via boss install github.com/freitasjca/horse-provider-nghttp2. libnghttp2 is dynamic-loaded at runtime (no link-time dependency). Without {$DEFINE HORSE_PROVIDER_NGHTTP2} the file compiles identically to upstream on both Delphi and FPC.

Test plan

  • Compile without any NGHTTP2 define — no change from upstream
  • Compile with {$DEFINE HORSE_PROVIDER_NGHTTP2} — routes to Horse.Provider.Nghttp2
  • Compile with legacy {$DEFINE HORSE_NGHTTP2} — same result
  • Verify FATAL fires for HORSE_PROVIDER_NGHTTP2 + HORSE_HOST_ISAPI (and other invalid combos)
  • All existing provider defines unaffected

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