Reimplement SubscriptionRef in Terms of ZHub #4916
Merged
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.
One issue with the current implementation of
SubscriptionRefis that since it is backed by aQueue, if more than one subscriber is observing changes to theRefeach subscriber will miss changes, since each time a value is taken from the queue by one subscriber it is no longer available to other subscribers. We can address this by backingSubscriptionRefwith aHub. This way each subscriber can receive the current value of theRefand all changes after they have subscribed.This allows
SubscriptionRefto function much like aVarin functional reactive programming frameworks, where theSubscriptionRefrepresents some state that can be changes and multiple processes can subscribe to take actions in response to any changes in that state.