blob: 80c12bd96849d24fbc12a501a44f6b432dc8ba78 [file] [log] [blame]
package disruptor
type CompositeBarrier []*Cursor
// type CompositeBarrier struct {
// cursors []*Cursor
// }
func NewCompositeBarrier(upstream ...*Cursor) CompositeBarrier {
if len(upstream) == 0 {
panic("At least one upstream cursor is required.")
}
cursors := make([]*Cursor, len(upstream))
copy(cursors, upstream)
// return &CompositeBarrier{cursors}
return CompositeBarrier(cursors)
}
func (this CompositeBarrier) Read(noop int64) int64 {
minimum := MaxSequenceValue
// for _, item := range this.cursors {
for _, item := range this {
sequence := item.Load()
if sequence < minimum {
minimum = sequence
}
}
return minimum
}