Move the private session runtime into the session module.
Separate parameter negotiation into session/negotiation.rs.
Rename SessionRuntime to SessionMachine.
Replace parallel optional lifecycle fields with one explicit private MachineState.
Box the open-session payload to satisfy strict Clippy size checks.
Architectural rationale
Representing connected, open, no-test-completed, and closed states as enum
variants makes contradictory lifecycle combinations unrepresentable. Open-only
state is owned by ActiveSession, while terminal packet counts remain available
after close. Public exports and observable behavior remain unchanged.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
session/negotiation.rs.SessionRuntimetoSessionMachine.MachineState.Architectural rationale
Representing connected, open, no-test-completed, and closed states as enum
variants makes contradictory lifecycle combinations unrepresentable. Open-only
state is owned by
ActiveSession, while terminal packet counts remain availableafter close. Public exports and observable behavior remain unchanged.
Testing
cargo fmt --all -- --checkcargo check --workspacecargo test --workspacecargo check -p irtt-client --no-default-featurescargo test -p irtt-client --no-default-featurescargo clippy -p irtt-client --all-targets --no-default-features -- -D warningsgit diff --check