blob: 5c1d14dc5e9a5efad84752dda25fcae534e9073a [file] [log] [blame]
package disruptor
type EasyReader struct {
reader *Reader
consumer Consumer
}
func NewEasyReader(reader *Reader, consumer Consumer) *EasyReader {
return &EasyReader{reader: reader, consumer: consumer}
}
func (this *EasyReader) Receive() int64 {
sequence, remaining := this.reader.Receive()
if remaining >= 0 {
for remaining >= 0 {
this.consumer.Consume(sequence, remaining)
remaining--
sequence++
}
this.reader.Commit(sequence - 1)
return sequence
} else {
return remaining // Idling, Gating
}
}