/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.toolkit.modules.concurrency.api;
/**
* A concurrency mechanism to group sequentially-created elements into ordered batches. A batch is returned (to a given
* {@link BatchProcessor}) when a certain maximum number of elements is reached, or after a specified time has elapsed since the batch was
* created. Batches are created implicitly when an element is added while no batch is already active.
*
* @param <T> the element type to aggregate
*
* @author Robert Mischke
*/
public interface BatchAggregator<T> {
/**
* Adds an element for aggregation. May trigger the internal creation of a new batch or the sending of a finished batch when the the
* maximum size limit is reached.
*
* @param element the element to add
*/
void enqueue(T element);
}