queue

package
v0.0.0-...-ad90b1c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 16, 2023 License: MIT Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Queue

type Queue interface {
	// Add an []byte to the back of the queue
	// will return false if the queue is closed.
	// In that case the []byte is dropped.
	Add([]byte) bool

	// Remove will remove a []byte from the queue.
	// If false is returned, it either means 1) there were no items on the queue
	// or 2) the queue is closed.
	Remove() ([]byte, bool)

	// Close the queue and discard all entried in the queue
	// all goroutines in wait() will return
	Close()

	// CloseRemaining will close the queue and return all entried in the queue.
	// All goroutines in wait() will return
	CloseRemaining() [][]byte

	// Closed returns true if the queue has been closed
	// The call cannot guarantee that the queue hasn't been
	// closed while the function returns, so only "true" has a definite meaning.
	Closed() bool

	// Wait for a []byte to be added or queue to be closed.
	// If there is items on the queue the first will
	// be returned immediately.
	// Will return "", false if the queue is closed.
	// Otherwise the return value of "remove" is returned.
	Wait() ([]byte, bool)

	// Cap returns the capacity (without allocations).
	Cap() int

	// Len returns the current length of the queue.
	Len() int

	// Size returns the current size of the queue in bytes.
	Size() int
}

Queue is an unbounded queue of []byte. The queue is goroutine safe. Inspired by http://blog.dubbelboer.com/2015/04/25/go-faster-queue.html (MIT)

func New

func New() Queue

New ByteQueue returns a new []byte queue with initial capacity.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL