feat(client): add Tokio async client #47

Merged
Lochnair merged 5 commits from feat/tokio-async-client into main 2026-08-04 09:46:01 +00:00
Lochnair commented 2026-08-04 08:43:49 +00:00 (Migrated from github.com)

Summary

Add an optional low-level Tokio AsyncClient for one connected UDP target.

Feature boundary

Tokio remains disabled by default and uses only rt, net, time, and sync.
Existing blocking and managed clients are unchanged.

Transactional async lifecycle

Reuse SessionMachine and ProbeSchedule for opening, probe sending, timeout
polling, receive classification, and close commits.

Readiness and cancellation

Retain preparations across cancellation and WouldBlock without committing
protocol state. Commit immediately after successful kernel acceptance.

Socket parity

Provide asynchronous DNS, IPv4/IPv6 binding, IPv6-only pre-bind setup,
DSCP handling, and Linux ancillary receives integrated with Tokio readiness.

Testing

Add focused cancellation/readiness/short-send tests and blocking-versus-async
equivalence coverage for HMAC, DSCP, no-test, timeout, finite runs, and peer close.

## Summary Add an optional low-level Tokio AsyncClient for one connected UDP target. ## Feature boundary Tokio remains disabled by default and uses only rt, net, time, and sync. Existing blocking and managed clients are unchanged. ## Transactional async lifecycle Reuse SessionMachine and ProbeSchedule for opening, probe sending, timeout polling, receive classification, and close commits. ## Readiness and cancellation Retain preparations across cancellation and WouldBlock without committing protocol state. Commit immediately after successful kernel acceptance. ## Socket parity Provide asynchronous DNS, IPv4/IPv6 binding, IPv6-only pre-bind setup, DSCP handling, and Linux ancillary receives integrated with Tokio readiness. ## Testing Add focused cancellation/readiness/short-send tests and blocking-versus-async equivalence coverage for HMAC, DSCP, no-test, timeout, finite runs, and peer close.
chatgpt-codex-connector[bot] (Migrated from github.com) reviewed 2026-08-04 08:49:05 +00:00
chatgpt-codex-connector[bot] (Migrated from github.com) left a comment

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b1e32d543c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

### 💡 Codex Review Here are some automated review suggestions for this pull request. **Reviewed commit:** `b1e32d543c` <details> <summary>ℹ️ About Codex in GitHub</summary> <br/> [Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you - Open a pull request for review - Mark a draft as ready - Comment "@codex review". If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". </details>
@@ -16,10 +16,12 @@ irtt-proto.workspace = true
libc = { version = "0.2.189", optional = true }
chatgpt-codex-connector[bot] (Migrated from github.com) commented 2026-08-04 08:49:05 +00:00

P1 Badge Put the Tokio inline table on one line

When any Cargo command loads this workspace, Cargo rejects this multiline inline table with newlines are unsupported in inline tables, so the entire workspace currently fails before compilation or tests can run. Keep the dependency specification on one line or replace it with a [dependencies.tokio] table.

Useful? React with 👍 / 👎.

**<sub><sub>![P1 Badge](https://img.shields.io/badge/P1-orange?style=flat)</sub></sub> Put the Tokio inline table on one line** When any Cargo command loads this workspace, Cargo rejects this multiline inline table with `newlines are unsupported in inline tables`, so the entire workspace currently fails before compilation or tests can run. Keep the dependency specification on one line or replace it with a `[dependencies.tokio]` table. Useful? React with 👍 / 👎.
Sign in to join this conversation.