morpheus_network::state

Module tcp

Source
Expand description

TCP connection state machine.

Non-blocking TCP connection establishment and lifecycle management.

§States

Closed → Connecting → Established → Closing → Closed
                ↓           ↓           ↓
              Error       Error       Error

§Usage

let mut tcp = TcpConnState::new();

// Start connection (non-blocking)
tcp.initiate(socket_handle, remote_ip, remote_port, now_tsc);

loop {
    iface.poll(...);
     
    // Get socket state from smoltcp
    let socket_state = get_tcp_state(socket_handle);
     
    match tcp.step(socket_state, now_tsc, timeout_ticks) {
        StepResult::Pending => continue,
        StepResult::Done => {
            let socket = tcp.socket().unwrap();
            // Use socket for send/recv
            break;
        }
        StepResult::Timeout => panic!("connect timeout"),
        StepResult::Failed => panic!("connect failed"),
    }
}

§Reference

NETWORK_IMPL_GUIDE.md §5.4

Structs§

Enums§