diff --git a/crates/irtt-client/src/client.rs b/crates/irtt-client/src/client.rs index 9d2f6c7..3cb1504 100644 --- a/crates/irtt-client/src/client.rs +++ b/crates/irtt-client/src/client.rs @@ -12,7 +12,7 @@ use crate::{ error::ClientError, event::{ClientEvent, OpenOutcome}, receive::recv_datagram, - runtime::{recv_buffer_size, SendProbeResult, SessionRuntime, MAX_OPEN_PACKET_SIZE}, + session::machine::{recv_buffer_size, SendProbeResult, SessionMachine, MAX_OPEN_PACKET_SIZE}, socket::{connect_udp_socket, resolve_remote, validate_open_timeouts}, socket_options::{apply_dscp_to_socket, clear_dscp_on_socket}, timing::ClientTimestamp, @@ -20,7 +20,7 @@ use crate::{ #[cfg(test)] use crate::{ - runtime::{ + session::machine::{ compute_one_way, compute_rtt, params_from_config, sequence_is_after, sequence_is_before, unix_epoch_ns_i64, update_highest_received, }, @@ -36,7 +36,7 @@ use crate::{ /// instead. #[derive(Debug)] pub struct Client { - runtime: SessionRuntime, + runtime: SessionMachine, socket: UdpSocket, remote: SocketAddr, recv_buffer: Vec, @@ -51,7 +51,7 @@ impl Client { pub fn connect(config: ClientConfig) -> Result { validate_open_timeouts(&config.open_timeouts)?; let remote = resolve_remote(&config)?; - let runtime = SessionRuntime::new(config.clone(), remote)?; + let runtime = SessionMachine::new(config.clone(), remote)?; let socket = connect_udp_socket(&config.socket_config, remote)?; Ok(Self { diff --git a/crates/irtt-client/src/lib.rs b/crates/irtt-client/src/lib.rs index cbe71b6..0f04c19 100644 --- a/crates/irtt-client/src/lib.rs +++ b/crates/irtt-client/src/lib.rs @@ -59,7 +59,6 @@ mod managed; mod metadata; mod probe; mod receive; -mod runtime; mod session; mod socket; mod socket_options; diff --git a/crates/irtt-client/src/managed/group.rs b/crates/irtt-client/src/managed/group.rs index 862f609..f621e53 100644 --- a/crates/irtt-client/src/managed/group.rs +++ b/crates/irtt-client/src/managed/group.rs @@ -17,7 +17,7 @@ use crate::{ event::{ClientEvent, OpenOutcome}, metadata::ReceiveMeta, receive::recv_datagram_from, - runtime::{advance_cadence, params_from_config, SendProbeResult, SessionRuntime}, + session::machine::{advance_cadence, params_from_config, SendProbeResult, SessionMachine}, socket::{bind_unconnected_udp_socket, validate_open_timeouts}, socket_options::apply_dscp_to_socket, timing::ClientTimestamp, @@ -625,7 +625,7 @@ struct TargetState { id: TargetId, remote: SocketAddr, configured_auth: Option, - runtime: SessionRuntime, + runtime: SessionMachine, status: TargetStatus, open_packet: Vec, counters: TargetCounters, @@ -709,7 +709,7 @@ impl TargetState { if let Some(auth) = &target.auth { config.hmac_key = auth.hmac_key.clone(); } - let runtime = SessionRuntime::new(config, target.remote)?; + let runtime = SessionMachine::new(config, target.remote)?; let open_packet = runtime.open_packet()?; Ok(Self { id: target.id, diff --git a/crates/irtt-client/src/runtime.rs b/crates/irtt-client/src/session/machine.rs similarity index 97% rename from crates/irtt-client/src/runtime.rs rename to crates/irtt-client/src/session/machine.rs index 0640100..2594a30 100644 --- a/crates/irtt-client/src/runtime.rs +++ b/crates/irtt-client/src/session/machine.rs @@ -17,7 +17,7 @@ use crate::{ }, metadata::ReceiveMeta, probe::{CompletedSet, PendingMap, PendingProbe, TimedOutMap}, - session::{negotiate_params, ActiveSession, ClientPhase, CloseSource, NegotiatedParams}, + session::{negotiate_params, NegotiatedParams}, timing::ClientTimestamp, }; @@ -25,7 +25,7 @@ pub(crate) const MAX_OPEN_PACKET_SIZE: usize = 512; const MIN_RECV_BUFFER_SIZE: usize = 2048; #[derive(Debug)] -pub(crate) struct SessionRuntime { +pub(crate) struct SessionMachine { config: ClientConfig, remote: std::net::SocketAddr, requested: Params, @@ -35,6 +35,34 @@ pub(crate) struct SessionRuntime { final_packets_sent: u64, } +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum ClientPhase { + Connected, + Open { token: u64 }, + NoTestCompleted, + Closed { source: CloseSource }, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum CloseSource { + Local, + Peer, +} + +#[derive(Debug)] +struct ActiveSession { + next_wire_seq: u32, + highest_received_seq: Option, + packets_sent: u64, + start_mono: Instant, + end_mono: Option, + next_send_at: Instant, + pending: PendingMap, + timed_out: TimedOutMap, + completed: CompletedSet, + sending_done: bool, +} + #[derive(Debug, Clone, Copy)] pub(crate) struct SendProbeResult { pub(crate) sent_at: ClientTimestamp, @@ -42,7 +70,7 @@ pub(crate) struct SendProbeResult { pub(crate) send_call: Duration, } -impl SessionRuntime { +impl SessionMachine { pub(crate) fn new( config: ClientConfig, remote: std::net::SocketAddr, diff --git a/crates/irtt-client/src/session/mod.rs b/crates/irtt-client/src/session/mod.rs new file mode 100644 index 0000000..14be3c4 --- /dev/null +++ b/crates/irtt-client/src/session/mod.rs @@ -0,0 +1,5 @@ +pub(crate) mod machine; +mod negotiation; + +pub(crate) use negotiation::negotiate_params; +pub use negotiation::{NegotiatedParams, NegotiationRestriction}; diff --git a/crates/irtt-client/src/session.rs b/crates/irtt-client/src/session/negotiation.rs similarity index 95% rename from crates/irtt-client/src/session.rs rename to crates/irtt-client/src/session/negotiation.rs index 08ec6b3..2427606 100644 --- a/crates/irtt-client/src/session.rs +++ b/crates/irtt-client/src/session/negotiation.rs @@ -1,11 +1,10 @@ -use std::{fmt, time::Instant}; +use std::fmt; use irtt_proto::{Clock, Params, ReceivedStats, StampAt, PROTOCOL_VERSION}; use crate::{ config::{NegotiationPolicy, MAX_DSCP_CODEPOINT}, error::ClientError, - probe::{CompletedSet, PendingMap, TimedOutMap}, }; /// Protocol parameters accepted for a session. @@ -156,34 +155,6 @@ impl fmt::Display for NegotiationRestriction { } } -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub(crate) enum ClientPhase { - Connected, - Open { token: u64 }, - NoTestCompleted, - Closed { source: CloseSource }, -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub(crate) enum CloseSource { - Local, - Peer, -} - -#[derive(Debug)] -pub(crate) struct ActiveSession { - pub next_wire_seq: u32, - pub highest_received_seq: Option, - pub packets_sent: u64, - pub start_mono: Instant, - pub end_mono: Option, - pub next_send_at: Instant, - pub pending: PendingMap, - pub timed_out: TimedOutMap, - pub completed: CompletedSet, - pub sending_done: bool, -} - pub(crate) fn negotiate_params( requested: &Params, returned: Params,