Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInvalidRead indicates that the requested position can no longer be read. ErrInvalidRead = errors.New("read position is no longer valid") )
Functions ¶
This section is empty.
Types ¶
type Ring ¶
type Ring struct {
// contains filtered or unexported fields
}
Ring is a ring buffer that stores *v1.Event
func NewRing ¶
NewRing creates a ring buffer. For efficiency, the internal buffer length will be a bitmask of ones + 1. The most significant bit position of this bitmask will be same position of the most significant bit position of 'n'. E.g.:
NewRing(254) -> internal buffer length: 256 NewRing(255) -> internal buffer length: 256 NewRing(256) -> internal buffer length: 512
func (*Ring) LastWrite ¶
LastWrite returns the last element written. Note: If Write(*v1.Event) is being executed concurrently with Read(uint64) please use LastWriteParallel instead.
func (*Ring) LastWriteParallel ¶
LastWriteParallel returns the last element written.
type RingReader ¶
type RingReader struct {
// contains filtered or unexported fields
}
RingReader is a reader for a Ring container.
func NewRingReader ¶
func NewRingReader(ring *Ring, start uint64) *RingReader
NewRingReader creates a new RingReader that starts reading the ring at the position given by start.
func (*RingReader) Next ¶
func (r *RingReader) Next() (*v1.Event, error)
Next reads the event at the current position and increment the read position. Returns io.EOF if there are no more entries. May return ErrInvalidRead if the writer overtook this RingReader.
func (*RingReader) NextFollow ¶
func (r *RingReader) NextFollow(ctx context.Context) *v1.Event
NextFollow reads the event at the current position and increment the read position by one. If there are no more event to read, NextFollow blocks until the next event is added to the ring or the context is cancelled.