Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrDisposed = errors.New("batcher: disposed")
ErrDisposed is the error returned for a disposed Batcher
Functions ¶
This section is empty.
Types ¶
type Batcher ¶
type Batcher interface { // Put adds items to the batcher. Put(interface{}) error // Get retrieves a batch from the batcher. This call will block until // one of the conditions for a "complete" batch is reached. Get() ([]interface{}, error) // Flush forcibly completes the batch currently being built Flush() error // Dispose will dispose of the batcher. Any calls to Put or Flush // will return ErrDisposed, calls to Get will return an error iff // there are no more ready batches. Dispose() // IsDisposed will determine if the batcher is disposed IsDisposed() bool }
Batcher provides an API for accumulating items into a batch for processing.
func New ¶
func New(maxTime time.Duration, maxItems, maxBytes, queueLen uint, calculate CalculateBytes) (Batcher, error)
New creates a new Batcher using the provided arguments. Batch readiness can be determined in three ways:
- Maximum number of bytes per batch
- Maximum number of items per batch
- Maximum amount of time waiting for a batch
Values of zero for one of these fields indicate they should not be taken into account when evaluating the readiness of a batch. This provides an ordering guarantee for any given thread such that if a thread places two items in the batcher, Get will guarantee the first item is returned before the second, whether before the second in the same batch, or in an earlier batch.
type CalculateBytes ¶
type CalculateBytes func(interface{}) uint
CalculateBytes evaluates the number of bytes in an item added to a Batcher.