- Add
MaxBatchSize
to all event handler interfaces (IEventHandler
,IBatchEventHandler
,IValueEventHandler
,IAsyncBatchEventHandler
) - Refactor event processor factories (breaking change)
The factory method now takes a
SequenceBarrier
instead of aISequence[]
. The factory implementations always had to create a sequence barrier anyway so the new API should be simpler is to use. Also, the factory types are now delegates instead of interfaces, so they can be created using lambdas, which was probably the design goal of the Java API.
- Remove
ISequence
(breaking change)
The codebase was no longer creating any implementation other than
Sequence
. Thus,ISequence
was an unnecessary abstraction which was not even useful for encapsulation because it was mutable.
- Remove the obsolete method
RingBuffer.ResetTo
(breaking change) - Remove
LiteTimeoutBlockingWaitStrategy
(breaking change) - Pass
DependentSequenceGroup
in sequence barrier constructor (breaking change) - Add tag to
DependentSequenceGroup
The goal of the tag is to allow wait strategies to identify specific sequence groups to apply different wait logic.
- Add
HybridSpinWaitStrategy
It is a non-blocking strategy that uses either
AggressiveSpinWait
orSpinWait
depending on the targetDependentSequenceGroup
. Although this wait strategy is useful and functional, it was mainly added as an example of a wait strategy that applies different wait logic depending on the sequence groups tags.