Skip to main content

actr_hyper/transport/
mod.rs

1//! Transport Layer 1: Transport layer
2//!
3//! Core Lane abstraction and transport management:
4//! - Lane: Physical embodiment of PayloadType, unified bidirectional channel abstraction
5//! - HostTransport: Intra-process transport management (Guest <-> Shell)
6//! - PeerTransport: Cross-process transport management (WebRTC + WebSocket)
7//! - WireHandle: Unified handle for Wire layer components
8//! - WirePool: Wire connection pool manager (strategy layer)
9//! - WireBuilder: Wire layer component builder
10
11mod backoff;
12mod connection_event;
13mod dest_transport;
14mod error;
15mod host_transport;
16pub(crate) mod lane;
17mod peer_transport;
18mod route_table;
19mod wire_builder;
20mod wire_handle;
21pub(crate) mod wire_pool;
22
23// Re-export Dest from actr-framework (unified API layer).
24pub use actr_framework::Dest;
25
26// Submodule-internal types (lanes, wire pool, sessions, dest_transport,
27// connection events broadcasters) stay reachable via their module paths
28// without duplicating re-exports here.
29
30// DataLane core abstraction (trait kept pub for sw-host/peer_transport).
31#[cfg(feature = "test-utils")]
32pub use lane::DataLane;
33#[cfg(not(feature = "test-utils"))]
34pub(crate) use lane::DataLane;
35pub(crate) use lane::{MpscLane, WebRtcDataLane, WebSocketDataLane, WsSink};
36pub(crate) use route_table::{PayloadTypeExt, RetryPolicy};
37
38// ConnType leaks through the public `WireHandle::connection_type` method,
39// so it must stay pub even though the `wire_pool` module itself is private.
40#[cfg(feature = "test-utils")]
41pub use wire_pool::ConnType;
42#[cfg(not(feature = "test-utils"))]
43pub(crate) use wire_pool::ConnType;
44
45// Transport management
46#[cfg(feature = "test-utils")]
47pub use host_transport::HostTransport;
48#[cfg(not(feature = "test-utils"))]
49pub(crate) use host_transport::HostTransport;
50#[cfg(not(feature = "test-utils"))]
51pub(crate) use peer_transport::PeerTransport;
52#[cfg(feature = "test-utils")]
53pub use peer_transport::{PeerTransport, WireBuilder};
54
55// Wire layer management
56#[cfg(feature = "test-utils")]
57pub use wire_builder::{DefaultWireBuilder, DefaultWireBuilderConfig};
58#[cfg(not(feature = "test-utils"))]
59pub(crate) use wire_builder::{DefaultWireBuilder, DefaultWireBuilderConfig};
60#[cfg(feature = "test-utils")]
61pub use wire_handle::{WireHandle, WireIdentity};
62#[cfg(not(feature = "test-utils"))]
63pub(crate) use wire_handle::{WireHandle, WireIdentity};
64
65// Error types
66pub use error::{NetworkError, NetworkResult};
67
68// Retry and backoff strategies
69pub use backoff::ExponentialBackoff;
70
71// Connection events are re-exported at the transport module boundary; the
72// broadcaster stays crate-internal.
73pub(crate) use connection_event::ConnectionEventBroadcaster;
74pub use connection_event::{ConnectionEvent, ConnectionState};
75
76// Connection session
77pub(crate) mod session;