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§
- Information about an established connection.
Enums§
- TCP connection state machine.
- TCP-specific errors.
- TCP socket state (simplified from smoltcp).