quic multi stream support, part 1#103
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #103 +/- ##
==========================================
+ Coverage 76.83% 77.08% +0.25%
==========================================
Files 66 66
Lines 17105 19658 +2553
==========================================
+ Hits 13143 15154 +2011
- Misses 3962 4504 +542 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR begins adding MQTT-over-QUIC multi-stream support by extending the sans-I/O QuicMqttEngine to route MQTT packets and QoS acknowledgements on per-QUIC-stream channels, while also adding QUIC local source bind configuration and surfacing new stream lifecycle events through FFI and examples.
Changes:
- Add per-stream routing primitives to the sans-I/O QUIC engine (control stream vs data streams), including stream-scoped responses/acks and stream-scoped retransmissions.
- Add QUIC local bind configuration (and a QUIC rebind capability in the tokio QUIC client), plus tests for the new config plumbing.
- Extend FFI + Swift examples to handle newly introduced QUIC stream events; update tests and docs accordingly.
Reviewed changes
Copilot reviewed 15 out of 16 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/key_log_tests.rs | Adds tests verifying QUIC local bind address builder wiring. |
| tests/engine_logic_tests.rs | Updates expectations for new PublishReceived event preceding MessageReceived. |
| swift/Examples/TcpClientExample/main.swift | Adds no-op handling for new stream lifecycle events in the TCP example. |
| swift/Examples/QuicClientExample/main.swift | Prints new stream lifecycle events in the QUIC example. |
| src/mqtt_client/transport/quic.rs | Adds local_bind_addr to QuicConfig, bind-family selection, and endpoint rebind. |
| src/mqtt_client/tokio_quic_client.rs | Adds connect-with-bind support and a rebind command that notifies the engine. |
| src/mqtt_client/tokio_async_client.rs | Adds quic_local_bind_addr to config/builder and wires it into QUIC transport creation. |
| src/mqtt_client/opts.rs | Adds auto_keepalive option to enable/disable automatic PINGREQ emission. |
| src/mqtt_client/mod.rs | Re-exports QUIC engine/0-RTT types behind quic-proto. |
| src/mqtt_client/inflight.rs | Records originating stream for inflight entries and returns stream-tagged expirations. |
| src/mqtt_client/engine.rs | Major expansion: stream-aware events, encoded packet APIs, multi-stream QUIC engine, and 0-RTT support. |
| flowsdk_ffi/src/engine/ffi_types.rs | Adds FFI event variants for stream lifecycle events. |
| flowsdk_ffi/src/engine.rs | Filters low-level events, maps new stream events, and adds C getters for stream event fields. |
| examples/no_io_quic_multi_stream_example.rs | New example demonstrating multi-stream QUIC usage with the sans-I/O engine. |
| docs/TODO.md | Notes future work for QUIC source bind/rebind wrappers. |
| Cargo.toml | Registers the new multi-stream example. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
No description provided.