Documentation

Index

Constants

This section is empty.

Variables

View Source
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

    func NewRing(n int) *Ring

      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) Cap

      func (r *Ring) Cap() uint64

        Cap returns the total capacity of the ring buffer, similar to builtin `cap()`.

        func (*Ring) LastWrite

        func (r *Ring) LastWrite() uint64

          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

          func (r *Ring) LastWriteParallel() uint64

            LastWriteParallel returns the last element written.

            func (*Ring) Len

            func (r *Ring) Len() uint64

              Len returns the number of elements in the ring buffer, similar to builtin `len()`.

              func (*Ring) Write

              func (r *Ring) Write(entry *v1.Event)

                Write writes the given event into the ring buffer in the next available writing block. The entry must not be nil, otherwise readFrom will block when reading back this event.

                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.

                        func (*RingReader) Previous

                        func (r *RingReader) Previous() (*v1.Event, error)

                          Previous reads the event at the current position and decrement the read position. Returns ErrInvalidRead if there are no older entries.