1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
//! # Moonpool Transport Layer
//!
//! FDB-style transport layer for the moonpool simulation framework.
//!
//! This crate provides networking primitives that work identically in
//! simulation and production environments, following `FoundationDB`'s
//! `NetTransport` patterns.
//!
//! ## Architecture
//!
//! ```text
//! ┌─────────────────────────────────────────────────┐
//! │ Application Code │
//! │ Uses NetTransport + RPC │
//! ├─────────────────────────────────────────────────┤
//! │ NetTransport (endpoint routing) │
//! │ • Multiplexes connections per endpoint │
//! │ • Request/response with correlation │
//! ├─────────────────────────────────────────────────┤
//! │ Peer (connection management) │
//! │ • Automatic reconnection with backoff │
//! │ • Message queuing during disconnection │
//! ├─────────────────────────────────────────────────┤
//! │ Wire Format (serialization) │
//! │ • Length-prefixed packets │
//! │ • CRC32C checksums │
//! └─────────────────────────────────────────────────┘
//! ```
//!
//! ## Components
//!
//! | Component | Purpose |
//! |-----------|---------|
//! | [`Peer`] | Resilient connection with automatic reconnection |
//! | [`NetTransport`] | Endpoint routing and connection multiplexing |
//! | [`wire`] | Binary serialization with CRC32C checksums |
//! | [`rpc`] | Request/response patterns with typed messaging |
//!
//! ## Quick Start
//!
//! ```ignore
//! use moonpool_transport::{NetTransportBuilder, send_request};
//!
//! // Build transport with network provider
//! let transport = NetTransportBuilder::new(network_provider, time_provider)
//! .build();
//!
//! // Send typed request, get typed response
//! let response: PongMessage = send_request(&transport, endpoint, ping).await?;
//! ```
// Re-export core types for convenience
pub use ;
// Production provider bundle — only with the `tokio` feature (core/tokio-providers).
pub use ;
// =============================================================================
// Modules
// =============================================================================
/// Error types for transport operations.
/// Resilient peer connection management.
/// Wire format with CRC32C checksums.
/// RPC layer with typed request/response patterns.
// =============================================================================
// Public API Re-exports
// =============================================================================
// Error exports
pub use MessagingError;
// Peer exports
pub use ;
// Wire format exports
pub use ;
// RPC exports
pub use ;
// Production transport alias (TokioProviders + JsonCodec).
pub use TokioTransport;
// Attribute macros
pub use service;