Skip to main content

appcore_gateway/
lib.rs

1// =============================================================================
2//        #######
3//     ###       ###     F: lib.rs
4//    ##   ## ##   ##    P: AppCore-Runtime
5//         ## ##
6//                       C: 2026/07/26 08:53:09 by dnettoRaw
7//    ##   ## ##   ##    U: 2026/08/02 12:48:56 by dnettoRaw
8//      ###########      S: 1.0.1-rc.8
9// =============================================================================
10
11//! Multi-tenant Gateway capability for the `AppCore` Runtime.
12
13#![deny(missing_docs)]
14
15pub mod authorization;
16pub mod capability;
17pub mod config;
18pub mod connection;
19pub mod diagnostics;
20pub mod error;
21mod federated_route;
22pub mod federation;
23mod federation_auth;
24mod federation_transport;
25pub mod ha;
26pub mod heartbeat;
27pub mod mesh;
28mod mesh_route;
29pub mod metrics;
30mod peer_route;
31pub mod registry;
32pub mod resolver;
33mod route_admission;
34mod route_fencing;
35pub mod router;
36pub mod runtime;
37pub mod service;
38pub mod session;
39pub mod socket;
40mod socket_lifecycle;
41mod socket_ownership;
42pub mod state;
43mod telemetry;
44pub mod tenant;
45mod tenant_directory;
46
47pub use appcore_distributed_contracts::{
48    OpaqueContentEnvelopeV1, OpaqueEnvelopeDecision, OpaqueEnvelopeDeduplicator,
49    OpaqueEnvelopePolicy, OPAQUE_CONTENT_ENVELOPE_SCHEMA_V1,
50};
51pub use authorization::{
52    client_connection_hash, gateway_token_claims, worker_connection_hash,
53    GATEWAY_CONNECTION_TOKEN_TTL_MS,
54};
55pub use capability::{
56    gateway_capability_descriptor, GatewayCapability, GATEWAY_RUNTIME_CAPABILITY,
57};
58pub use config::{
59    GatewayConfig, GATEWAY_ADAPTER_NAME, GATEWAY_PROVIDER_ID, MAX_GATEWAY_AFFINITY_KEY_BYTES,
60    MAX_GATEWAY_WORKER_INFLIGHT,
61};
62pub use connection::{ClientConnection, WorkerConnection, WorkerConnectionKey};
63pub use diagnostics::{
64    GatewayCapabilitySnapshot, GatewayDiagnosticsQuery, GatewayDiagnosticsSnapshot,
65    GatewayPeerSnapshot,
66};
67pub use error::{GatewayError, GatewayResult};
68pub use federation::{
69    GatewayFederationRequestV2, GatewayFederationResponseV2, GATEWAY_FEDERATION_PATH_V2,
70    GATEWAY_FEDERATION_SCHEMA_V2,
71};
72pub use federation_auth::{gateway_federation_token_claims, GATEWAY_FEDERATION_TOKEN_TTL_MS};
73#[cfg(feature = "ha-redis")]
74pub use ha::redis::{
75    RedisGatewayCredential, RedisGatewayRegistryConfig, RedisGatewayRegistryProvider,
76    MAX_GATEWAY_REDIS_NAMESPACE_BYTES,
77};
78pub use ha::{
79    GatewayFederationUrl, GatewayHaCoordinator, GatewayHaCoordinatorConfig,
80    GatewayHaCoordinatorSnapshot, GatewayHaLifecycle, GatewayHaLifecycleSnapshot, GatewayHaMode,
81    GatewayHaOwnershipSnapshot, GatewayHaOwnershipSource, GatewayHaSessionSnapshot,
82    GatewayHaTenantBinding, GatewayHaWorkerSnapshot, GatewayInstanceLease,
83    GatewayLocalRequestClaim, GatewayRegistryError, GatewayRegistryFuture, GatewayRegistryProvider,
84    GatewayRegistryResult, GatewayRequestFence, GatewaySessionRecord, GatewayWorkerRecord,
85    GatewayWorkerRegistration, MAX_GATEWAY_INSTANCE_LEASE_TTL_MS, MAX_GATEWAY_REGISTRY_CONCURRENCY,
86    MAX_GATEWAY_RESOLVE_CANDIDATES,
87};
88pub use heartbeat::spawn_heartbeat_pruner;
89pub use mesh::{
90    MeshPeerRequest, MeshPeerResponse, MeshPeerTransport, MESH_HTTP_SCHEMA_V1, MESH_PEER_RELAY_PATH,
91};
92pub use metrics::GatewayMetrics;
93pub use registry::{CapabilityRegistry, CapabilityRegistryStats};
94pub use resolver::{
95    CapabilityResolver, SelectionPolicy, WorkerSelectionError, WorkerSelectionInput,
96    WorkerSelectionPolicy,
97};
98pub use router::EnvelopeRouter;
99pub use runtime::{
100    GatewayRuntime, GatewayRuntimeDetails, GatewayRuntimeSnapshot, GatewayRuntimeState,
101};
102pub use service::make_gateway_router;
103pub use session::GatewaySession;
104pub use state::GatewayState;
105pub use telemetry::{
106    GatewayCapabilityTelemetrySnapshot, GatewayTelemetryExportError, GatewayTelemetryExporter,
107    GatewayTelemetrySnapshot, MAX_GATEWAY_TELEMETRY_CAPABILITIES,
108};
109pub use tenant::TenantState;
110pub use tenant_directory::SharedTenantState;
111
112#[cfg(test)]
113mod tests;