# irtt-proto Low-level wire encoding and decoding for the IRTT-compatible protocol: request and reply structs, flags, negotiable parameters, varint/zigzag primitives, and HMAC-MD5 packet authentication. No sockets, no runtime, no session state. ## Who should use this Most applications should not depend on this crate directly. Use [`irtt-client`](https://docs.rs/irtt-client) to run client sessions or [`irtt-server`](https://docs.rs/irtt-server) to run a server; both build on `irtt-proto` and provide session lifecycle, negotiation, and validated configuration on top of it. Reach for `irtt-proto` directly only if you are implementing another IRTT-compatible client or server from scratch and need the raw packet layer. Field values mirror the wire format closely rather than expressing policy: `Params::decode` rejects malformed input, but direct construction plus `Params::encode` performs no additional validation — callers are responsible for validating values before sending them. ## Documentation Full API documentation is on [docs.rs/irtt-proto](https://docs.rs/irtt-proto). ## Project Part of [irtt-rs](https://github.com/Lochnair/irtt-rs), an independent Rust implementation of an IRTT-compatible protocol stack.