moonpool-transport 0.2.0

FDB-style transport layer for the moonpool framework
docs.rs failed to build moonpool-transport-0.2.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: moonpool-transport-0.3.0

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 FlowTransport patterns.

Architecture

┌─────────────────────────────────────────────────┐
│              Application Code                    │
│         Uses FlowTransport + RPC                 │
├─────────────────────────────────────────────────┤
│     FlowTransport (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
[FlowTransport] Endpoint routing and connection multiplexing
[wire] Binary serialization with CRC32C checksums
[rpc] Request/response patterns with typed messaging

Quick Start

use moonpool_transport::{FlowTransportBuilder, send_request};

// Build transport with network provider
let transport = FlowTransportBuilder::new(network_provider, time_provider)
    .build();

// Send typed request, get typed response
let response: PongMessage = send_request(&transport, endpoint, ping).await?;