feat(moq-ffi): expose group fetch API#2142
Open
Qizot wants to merge 3 commits into
Open
Conversation
Expose single-group fetches by track name and sequence across UniFFI and the language wrappers. Add dynamic group requests for cache misses and document moq-lite 05+ support. Co-authored-by: GPT-5 Codex <noreply@openai.com>
There was a problem hiding this comment.
Sorry @kixelated, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
This was referenced Jul 10, 2026
Fork PRs can't read repo secrets, so the `release-kt-lib.yml` dry-run
(`publishToMavenLocal`) ran without a signing key and failed. Two coupled causes:
- The job set `ORG_GRADLE_PROJECT_signingInMemoryKey` at job level, so an empty
secret left the property present-but-blank and vanniktech tried to sign with an
empty key ("Could not read PGP secret key").
- `signAllPublications()` was called unconditionally, registering a *required* sign
task that fails ("no configured signatory") even when the key is fully absent.
Fix both: scope the signing credentials to the "Publish to Maven Central" step
(push/workflow_dispatch only), and gate `signAllPublications()` on a non-blank
`signingInMemoryKey`. Keyless local and fork-PR builds now publish unsigned; real
releases still sign. This is what the build comment already claimed but never did.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1a439dc to
99494e5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Native binding users can now fetch one retained or on-demand MoQ group by track name and sequence without opening a live subscription. Publishers can serve cache misses through a typed dynamic request that preserves the consumer's priority and requires an explicit accept or abort response.
The API stays group-oriented to match
moq-net: fetch returns the existing group consumer, and callers read every frame from that group. A small options record leaves room for future fetch controls, while dedicatedNotFoundandUnsupportederrors let callers distinguish availability from protocol capability.Python, Swift, Kotlin, and Go expose the same flow through their ergonomic wrappers. This PR intentionally does not change
libmoqor the C API.Validation
cargo test -p moq-ffi: 30 tests passed, covering cached fetches, dynamic cache misses, rejection, priority propagation, missing tracks, and requested-track handoffjust rs check -p moq-ffi: check, clippy, rustfmt, rustdoc, cargo-shear, and cargo-sort passedjust py test: 42 tests passedjust py check: Ruff and Pyright passedjust swift check: 4 tests passeduniffi-bindgen-gois unavailable locallyPost-Deploy Monitoring & Validation
No service monitoring is required because this is an additive SDK surface with no server deployment or wire-format change. Release CI should generate every binding and compile its wrapper; any codegen checksum mismatch, missing method, or wrapper compile failure should block release. The PR author owns validation through the next binding release, and rollback is reverting this commit or withholding that release.
(Written by GPT-5)