Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
DataBatcher< T > Class Template Referenceabstract

#include <data_batcher.h>

Inheritance diagram for DataBatcher< T >:
Inheritance graph
[legend]

Public Member Functions

virtual bool batchData (const T &data_to_batch)
 
 DataBatcher (size_t max_allowable_batch_size=DataBatcher::kDefaultMaxBatchSize, size_t trigger_size=DataBatcher::kDefaultTriggerSize, std::chrono::microseconds try_enqueue_duration=std::chrono::duration_cast< std::chrono::microseconds >(std::chrono::seconds(2)))
 
size_t getCurrentBatchSize ()
 
size_t getMaxAllowableBatchSize ()
 
size_t getTriggerBatchSize ()
 
std::chrono::microseconds getTryEnqueueDuration ()
 
virtual bool publishBatchedData ()=0
 
void resetBatchedData ()
 
void resetTriggerBatchSize ()
 
void setMaxAllowableBatchSize (int new_value)
 
void setTriggerBatchSize (size_t new_value)
 
void setTryEnqueueDuration (std::chrono::microseconds duration)
 
bool shutdown () override
 
 ~DataBatcher () override=default
 
- Public Member Functions inherited from Service
ServiceState getState ()
 
virtual std::string getStatusString ()
 
 Service ()
 
virtual bool start ()
 
virtual ~Service ()=default
 

Static Public Member Functions

static void validateConfigurableSizes (size_t batch_max_queue_size, size_t batch_trigger_publish_size)
 

Static Public Attributes

static const size_t kDefaultMaxBatchSize = 1024
 
static const size_t kDefaultTriggerSize = SIZE_MAX
 

Protected Member Functions

virtual void emptyCollection ()
 
- Protected Member Functions inherited from Service
void setState (ServiceState new_state)
 

Protected Attributes

std::shared_ptr< std::list< T > > batched_data_
 
std::recursive_mutex mtx
 

Private Attributes

std::atomic< size_t > max_allowable_batch_size_ {}
 
std::atomic< size_t > trigger_batch_size_ {}
 
std::atomic< std::chrono::microseconds > try_enqueue_duration_ {}
 

Detailed Description

template<typename T>
class DataBatcher< T >

Abstract class used to define a batching interface.

Template Parameters
Tthe type of data to be batched.

Definition at line 37 of file data_batcher.h.

Constructor & Destructor Documentation

template<typename T>
DataBatcher< T >::DataBatcher ( size_t  max_allowable_batch_size = DataBatcher< T >::kDefaultMaxBatchSize,
size_t  trigger_size = DataBatcher< T >::kDefaultTriggerSize,
std::chrono::microseconds  try_enqueue_duration = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::seconds(2)) 
)
inline

Create a DataBatcher instance

Parameters
max_allowable_batch_sizeif this limit is reached then the queue is emptied via the emptyCollection method
trigger_sizeif this limit is reached then the queue is emptied via the publish method
try_enqueue_durationmaximum amount of time to attempt to empty queue during the publish method

Definition at line 54 of file data_batcher.h.

template<typename T>
DataBatcher< T >::~DataBatcher ( )
overridedefault

Destruct a DataBatcher instance

Member Function Documentation

template<typename T>
virtual bool DataBatcher< T >::batchData ( const T &  data_to_batch)
inlinevirtual

Batch an item.

Parameters
data_to_batch
Returns
true if the data was accepted, false if internal size limit was exceeded

Definition at line 78 of file data_batcher.h.

template<typename T>
virtual void DataBatcher< T >::emptyCollection ( )
inlineprotectedvirtual

Safeguard in case the handleTriggerSize method does not properly drain the collection. This will clear the currently batched data. If other behavior is desired to empty the collection implementing classes should override.

Definition at line 231 of file data_batcher.h.

template<typename T>
size_t DataBatcher< T >::getCurrentBatchSize ( )
inline

Return the number of currently batched items.

Returns

Definition at line 103 of file data_batcher.h.

template<typename T>
size_t DataBatcher< T >::getMaxAllowableBatchSize ( )
inline

Return the maximum allowable batch size. When this limit is reached the queue is emptied via the emptyCollection method.

Returns

Definition at line 146 of file data_batcher.h.

template<typename T>
size_t DataBatcher< T >::getTriggerBatchSize ( )
inline

Return the trigger value. Note: this is set to kDefaultTriggerSize = SIZE_MAX by default, which means the trigger is not used and publish must be called manually.

Returns

Definition at line 135 of file data_batcher.h.

template<typename T>
std::chrono::microseconds DataBatcher< T >::getTryEnqueueDuration ( )
inline

Get the current try_enqueue_duration_.

Returns

Definition at line 185 of file data_batcher.h.

template<typename T>
virtual bool DataBatcher< T >::publishBatchedData ( )
pure virtual

When the getTriggerBatchSize is met this method will be called.

Returns

Implemented in TestBatcher.

template<typename T>
void DataBatcher< T >::resetBatchedData ( )
inline

Reset the batched data shared pointer.

Definition at line 112 of file data_batcher.h.

template<typename T>
void DataBatcher< T >::resetTriggerBatchSize ( )
inline

Reset the trigger batch size to the default value, which means the mechanism is no longer set. Publish will need to be called manually.

Definition at line 167 of file data_batcher.h.

template<typename T>
void DataBatcher< T >::setMaxAllowableBatchSize ( int  new_value)
inline

Set the maximum allowable batch size. When this limit is reached the queue is emptied via the emptyCollection method.

Parameters
max_allowable_batch_size

Definition at line 156 of file data_batcher.h.

template<typename T>
void DataBatcher< T >::setTriggerBatchSize ( size_t  new_value)
inline

Set the trigger value, which will call the publish method when the number of batched items is greater than this limit. Note: this value must be strictly less than the max_allowable_batch_size_.

Parameters
new_value

Definition at line 123 of file data_batcher.h.

template<typename T>
void DataBatcher< T >::setTryEnqueueDuration ( std::chrono::microseconds  duration)
inline

Set the maximum amount of time publish can attempt to empty the queue.

Parameters
duration

Definition at line 176 of file data_batcher.h.

template<typename T>
bool DataBatcher< T >::shutdown ( )
inlineoverridevirtual

Shutdown the batcher: this blocks until publish has completed in order to attempt to empty any unpublished data.

Returns
the result of Service::shutdown()

Reimplemented from Service.

Definition at line 217 of file data_batcher.h.

template<typename T>
static void DataBatcher< T >::validateConfigurableSizes ( size_t  batch_max_queue_size,
size_t  batch_trigger_publish_size 
)
inlinestatic
Exceptions
invalidargument if the batch_trigger_publish_size is strictly greater than max_allowable_batch_size
Parameters
batch_max_queue_size
batch_trigger_publish_size

Definition at line 202 of file data_batcher.h.

Member Data Documentation

template<typename T>
std::shared_ptr<std::list<T> > DataBatcher< T >::batched_data_
protected

Definition at line 236 of file data_batcher.h.

template<typename T>
const size_t DataBatcher< T >::kDefaultMaxBatchSize = 1024
static

Definition at line 44 of file data_batcher.h.

template<typename T>
const size_t DataBatcher< T >::kDefaultTriggerSize = SIZE_MAX
static

SIZE_MAX is used as the NOT set default.

Definition at line 43 of file data_batcher.h.

template<typename T>
std::atomic<size_t> DataBatcher< T >::max_allowable_batch_size_ {}
private

Size used for the internal storage

Definition at line 243 of file data_batcher.h.

template<typename T>
std::recursive_mutex DataBatcher< T >::mtx
mutableprotected

Definition at line 237 of file data_batcher.h.

template<typename T>
std::atomic<size_t> DataBatcher< T >::trigger_batch_size_ {}
private

Definition at line 244 of file data_batcher.h.

template<typename T>
std::atomic<std::chrono::microseconds> DataBatcher< T >::try_enqueue_duration_ {}
private

Definition at line 245 of file data_batcher.h.


The documentation for this class was generated from the following file:


dataflow_lite
Author(s): AWS RoboMaker
autogenerated on Fri May 7 2021 02:18:22