2.x: add sample() overload that can emit the very last buffered item #4955
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.
The
sample()
operator in 1.x has been changed to always emit the very last buffered item before completion for 1.1.3: Discussion, PR.This change has been forgotten in 2.x (because 2.x
sample()
was implemented several months earlier) but unlike 1.x, I don't want to break existing use cases, hence the introduction of 6 overloads (3 for each base type) that let's one define the "tail" behavior.Note that the associated marble diagrams are inconsistent with the operators implemented, we need a new diagram where the timed-sample also emits the last value:
and one new diagram where the sampler-sample doesn't emit the last value:
The default sampler-sample should use this and the
emitLast == true
version can use the current diagram.(I don't have a Mac thus can't run OmniGraffle).
Related: #4952