| 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 |
| } |