- Create crates/alknet-endpoint/ with Cargo.toml, feature flags (quinn, iroh, tcp, acme) - Implement HandlerRegistry (registry.rs) — extracted from core/endpoint.rs - Implement AlknetEndpoint (endpoint.rs) — fresh build against ADR-083 shape - new() takes no StaticConfig, no TLS config - with_quinn/with_iroh/with_tcp_tls builder methods - run() spawns accept loops for each active transport - shutdown() is infallible (no Result) - No EndpointError type - Implement dispatch (dispatch.rs) — shared dispatch_connection free function - Transport-agnostic: takes pre-extracted alpn, fingerprint, remote_addr - ACME guard (acme-tls/1) behind acme feature - build_auth_context resolves identity from fingerprint - Implement accept loops: - accept/quinn.rs — quinn accept loop with ALPN + fingerprint extraction - accept/iroh.rs — iroh accept loop with ALPN negotiation + fingerprint - accept/tcp_tls.rs — TCP+TLS accept loop (new code, not in old endpoint.rs) - Add alknet-endpoint to workspace members - All feature combos compile cleanly (no features, quinn, iroh, tcp, all three) - Workspace cargo check passes
28 lines
773 B
TOML
28 lines
773 B
TOML
[package]
|
|
name = "alknet-endpoint"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "Server-side multi-transport accept-loop runner — dispatches incoming connections by ALPN"
|
|
repository.workspace = true
|
|
|
|
[lib]
|
|
name = "alknet_endpoint"
|
|
|
|
[features]
|
|
default = []
|
|
quinn = ["dep:quinn", "alknet-core/quinn"]
|
|
iroh = ["dep:iroh", "alknet-core/iroh"]
|
|
tcp = ["dep:tokio-rustls"]
|
|
acme = []
|
|
|
|
[dependencies]
|
|
alknet-core = { path = "../alknet-core" }
|
|
tokio = { version = "1", features = ["full"] }
|
|
arc-swap = "1"
|
|
tracing = "0.1"
|
|
rustls = "0.23"
|
|
quinn = { version = "0.11", optional = true }
|
|
iroh = { version = "1.0", optional = true, default-features = false, features = ["tls-aws-lc-rs"] }
|
|
tokio-rustls = { version = "0.26", optional = true }
|