Skip to content

quic multi stream support, part 1#103

Merged
qzhuyan merged 14 commits into
mainfrom
worktree-quic-multi-stream
Jul 4, 2026
Merged

quic multi stream support, part 1#103
qzhuyan merged 14 commits into
mainfrom
worktree-quic-multi-stream

Conversation

@qzhuyan

@qzhuyan qzhuyan commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

@codecov-commenter

codecov-commenter commented Jul 2, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 46.34146% with 132 lines in your changes missing coverage. Please review.
✅ Project coverage is 77.08%. Comparing base (e7475db) to head (8a93c02).

Files with missing lines Patch % Lines
flowsdk_ffi/src/engine.rs 29.70% 71 Missing ⚠️
src/mqtt_client/tokio_quic_client.rs 43.63% 31 Missing ⚠️
src/mqtt_client/transport/quic.rs 56.41% 17 Missing ⚠️
src/mqtt_client/tokio_async_client.rs 55.17% 13 Missing ⚠️
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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread flowsdk_ffi/src/engine.rs Outdated
Comment thread flowsdk_ffi/src/engine.rs Outdated
@qzhuyan qzhuyan merged commit 097d4eb into main Jul 4, 2026
29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants