Skip to content

feat(moq-ffi): expose group fetch API#2142

Open
Qizot wants to merge 3 commits into
moq-dev:devfrom
Qizot:feat/moq-ffi-fetch
Open

feat(moq-ffi): expose group fetch API#2142
Qizot wants to merge 3 commits into
moq-dev:devfrom
Qizot:feat/moq-ffi-fetch

Conversation

@Qizot

@Qizot Qizot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

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 dedicated NotFound and Unsupported errors 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 libmoq or 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 handoff
  • just rs check -p moq-ffi: check, clippy, rustfmt, rustdoc, cargo-shear, and cargo-sort passed
  • just py test: 42 tests passed
  • just py check: Ruff and Pyright passed
  • just swift check: 4 tests passed
  • Kotlin binding generation passed; Gradle tests were skipped because Gradle is unavailable locally
  • Go verification was skipped because uniffi-bindgen-go is unavailable locally

Post-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.


Compound Engineering
Codex

(Written by GPT-5)

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>

@sourcery-ai sourcery-ai Bot 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.

Sorry @Qizot, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@Qizot Qizot marked this pull request as draft July 10, 2026 12:19
@kixelated kixelated marked this pull request as ready for review July 10, 2026 19:47

@sourcery-ai sourcery-ai Bot 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.

Sorry @kixelated, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

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>
@kixelated kixelated force-pushed the feat/moq-ffi-fetch branch from 1a439dc to 99494e5 Compare July 11, 2026 02:04
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.

2 participants