Conversation
This was referenced May 25, 2026
gmarzot
approved these changes
May 25, 2026
Contributor
gmarzot
left a comment
There was a problem hiding this comment.
@gmarzot reviewed 8 files and all commit messages.
Reviewable status:complete! all files reviewed, all discussions resolved (waiting on akash-a-n, michalhosna, mondain, Oxyd, peterchave, suhasHere, and TimEvens).
791816b to
c80d25c
Compare
Summary: Adds two executor-crossing filter classes that wrap the Publisher and Subscriber interfaces and forward all calls to a target executor. PublisherCrossExecFilter uses co_withExecutor on every coroutine method (subscribe, fetch, trackStatus, subscribeNamespace) to switch to the target executor before invoking the inner. goaway() is fire-and-forget via executor->add(). SubscriberCrossExecFilter does the same for publishNamespace() and goaway(). publish() is more involved: it returns a CrossExecFilter as the consumer immediately (before the inner is called), then the reply Task switches to the target executor, calls inner->publish(), and wires setDownstream() to connect the real consumer. FIFO ordering on the target executor guarantees setDownstream() runs before any data writes enqueued afterward. Both classes require the target executor to be FIFO if call ordering matters. Unit tests cover success/error paths for all methods plus the goaway enqueue-vs-invoke ordering. Test Plan: moqx_publisher_cross_exec_filter_test moqx_subscriber_cross_exec_filter_test
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:
Adds two executor-crossing filter classes that wrap the Publisher and
Subscriber interfaces and forward all calls to a target executor.
PublisherCrossExecFilter uses co_withExecutor on every coroutine method
(subscribe, fetch, trackStatus, subscribeNamespace) to switch to the
target executor before invoking the inner. goaway() is fire-and-forget
via executor->add().
SubscriberCrossExecFilter does the same for publishNamespace() and
goaway(). publish() is more involved: it returns a CrossExecFilter as
the consumer immediately (before the inner is called), then the reply
Task switches to the target executor, calls inner->publish(), and wires
setDownstream() to connect the real consumer. FIFO ordering on the
target executor guarantees setDownstream() runs before any data writes
enqueued afterward.
Both classes require the target executor to be FIFO if call ordering
matters. Unit tests cover success/error paths for all methods plus the
goaway enqueue-vs-invoke ordering.
Test Plan:
moqx_publisher_cross_exec_filter_test
moqx_subscriber_cross_exec_filter_test
This change is