Skip to content

Commit cc22355

Browse files
h3i: add interactive mode to async client
Add H3iHandle and connect_interactive() to allow submitting actions one at a time via a channel, rather than providing all actions upfront. Changes: - Add H3iHandle struct with do_action() and finish() methods - Add connect_interactive() function that returns an H3iHandle - Refactor H3iDriver to use VecDeque action queue instead of Vec+index - Add action_rx channel for receiving actions in interactive mode - Move action processing from iterator-based to queue-based approach - Process incoming actions in work_loop via select! macro This enables use cases where actions need to be submitted dynamically based on server responses, rather than predetermined at connection time.
1 parent aecfd90 commit cc22355

File tree

2 files changed

+259
-82
lines changed

2 files changed

+259
-82
lines changed

h3i/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ categories = { workspace = true }
1414
readme = "README.md"
1515

1616
[features]
17-
async = ["dep:buffer-pool", "dep:tokio", "dep:tokio-quiche"]
17+
async = ["dep:buffer-pool", "dep:futures", "dep:tokio", "dep:tokio-quiche"]
1818

1919
[dependencies]
2020
clap = "3"
@@ -35,5 +35,6 @@ url = { workspace = true }
3535

3636
# Dependencies for async client
3737
buffer-pool = { optional = true, workspace = true }
38+
futures = { version = "0.3", optional = true }
3839
tokio = { version = "1.44", features = ["net", "sync", "time"], optional = true }
3940
tokio-quiche = { features = ["capture_keylogs", "quiche_internal"], optional = true, workspace = true }

0 commit comments

Comments
 (0)