OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
WorkQueue< QueueEntryT > Class Template Reference

#include <queue_task.h>

Collaboration diagram for WorkQueue< QueueEntryT >:

Public Types

typedef tbb::concurrent_queue
< QueueEntryT > 
Queue
 
typedef boost::function< bool(QueueEntryT)> Callback
 
typedef boost::function< bool(void)> StartRunnerFunc
 
typedef boost::function< void(bool)> TaskExitCallback
 
typedef boost::function< bool()> TaskEntryCallback
 

Public Member Functions

 WorkQueue (int taskId, int taskInstance, Callback callback, size_t size=kMaxSize, size_t max_iterations=kMaxIterations)
 
void Shutdown (bool delete_entries=true)
 
void ScheduleShutdown (bool delete_entries=true)
 
 ~WorkQueue ()
 
void SetStartRunnerFunc (StartRunnerFunc start_runner_fn)
 
void SetSize (size_t size)
 
void SetBounded (bool bounded)
 
bool GetBounded () const
 
void SetHighWaterMark (const WaterMarkInfos &high_water)
 
void SetHighWaterMark (const WaterMarkInfo &hwm_info)
 
void ResetHighWaterMark ()
 
WaterMarkInfos GetHighWaterMark () const
 
void SetLowWaterMark (const WaterMarkInfos &low_water)
 
void SetLowWaterMark (const WaterMarkInfo &lwm_info)
 
void ResetLowWaterMark ()
 
WaterMarkInfos GetLowWaterMark () const
 
bool Enqueue (QueueEntryT entry)
 
bool Dequeue (QueueEntryT *entry)
 
int GetTaskId () const
 
int GetTaskInstance () const
 
void MayBeStartRunner ()
 
Callback GetCallback () const
 
void SetEntryCallback (TaskEntryCallback on_entry)
 
void SetExitCallback (TaskExitCallback on_exit)
 
void set_name (const std::string &name)
 
std::string Description () const
 
void set_disable (bool disabled)
 
bool IsDisabled () const
 
size_t on_entry_defer_count () const
 
bool OnEntry ()
 
void OnExit (bool done)
 
bool IsQueueEmpty () const
 
size_t Length () const
 
size_t NumEnqueues () const
 
size_t NumDequeues () const
 
size_t NumDrops () const
 
bool deleted () const
 
uint32_t task_starts () const
 
size_t max_queue_len () const
 
bool measure_busy_time () const
 
void set_measure_busy_time (bool val) const
 
uint64_t busy_time () const
 
void add_busy_time (uint64_t t)
 
void ClearStats () const
 

Static Public Attributes

static const int kMaxSize = 1024
 
static const int kMaxIterations = 32
 

Private Member Functions

bool DequeueInternal (QueueEntryT *entry)
 
bool DequeueInternalLocked (QueueEntryT *entry)
 
bool AreWaterMarksSet () const
 
void ShutdownLocked (bool delete_entries)
 
size_t AtomicIncrementQueueCount (QueueEntryT *entry)
 
size_t AtomicDecrementQueueCount (QueueEntryT *entry)
 
void ProcessHighWaterMarks (size_t count)
 
void ProcessLowWaterMarks (size_t count)
 
bool EnqueueInternal (QueueEntryT entry)
 
bool EnqueueInternalLocked (QueueEntryT entry)
 
bool EnqueueBounded (QueueEntryT entry)
 
bool EnqueueBoundedLocked (QueueEntryT entry)
 
bool RunnerAbortLocked ()
 
bool RunnerAbort ()
 
bool RunnerDone ()
 
 DISALLOW_COPY_AND_ASSIGN (WorkQueue)
 

Private Attributes

Queue queue_
 
tbb::atomic< size_t > count_
 
tbb::mutex mutex_
 
bool running_
 
int taskId_
 
int taskInstance_
 
std::string name_
 
Callback callback_
 
TaskEntryCallback on_entry_cb_
 
TaskExitCallback on_exit_cb_
 
StartRunnerFunc start_runner_
 
QueueTaskRunner< QueueEntryT,
WorkQueue< QueueEntryT > > * 
current_runner_
 
size_t on_entry_defer_count_
 
tbb::atomic< bool > disabled_
 
bool deleted_
 
size_t enqueues_
 
size_t dequeues_
 
size_t drops_
 
size_t max_iterations_
 
size_t size_
 
bool bounded_
 
bool shutdown_scheduled_
 
bool delete_entries_on_shutdown_
 
WaterMarkTuple watermarks_
 
tbb::mutex water_mutex_
 
uint32_t task_starts_
 
size_t max_queue_len_
 
uint64_t busy_time_
 
bool measure_busy_time_
 

Friends

class QueueTaskTest
 
class QueueTaskShutdownTest
 
class QueueTaskWaterMarkTest
 
class QueueTaskRunner< QueueEntryT, WorkQueue< QueueEntryT > >
 

Detailed Description

template<typename QueueEntryT>
class WorkQueue< QueueEntryT >

Definition at line 109 of file queue_task.h.

Member Typedef Documentation

template<typename QueueEntryT>
typedef boost::function<bool (QueueEntryT)> WorkQueue< QueueEntryT >::Callback

Definition at line 114 of file queue_task.h.

template<typename QueueEntryT>
typedef tbb::concurrent_queue<QueueEntryT> WorkQueue< QueueEntryT >::Queue

Definition at line 113 of file queue_task.h.

template<typename QueueEntryT>
typedef boost::function<bool (void)> WorkQueue< QueueEntryT >::StartRunnerFunc

Definition at line 115 of file queue_task.h.

template<typename QueueEntryT>
typedef boost::function<bool ()> WorkQueue< QueueEntryT >::TaskEntryCallback

Definition at line 117 of file queue_task.h.

template<typename QueueEntryT>
typedef boost::function<void (bool)> WorkQueue< QueueEntryT >::TaskExitCallback

Definition at line 116 of file queue_task.h.

Constructor & Destructor Documentation

template<typename QueueEntryT>
WorkQueue< QueueEntryT >::WorkQueue ( int  taskId,
int  taskInstance,
Callback  callback,
size_t  size = kMaxSize,
size_t  max_iterations = kMaxIterations 
)
inline

Definition at line 119 of file queue_task.h.

template<typename QueueEntryT>
WorkQueue< QueueEntryT >::~WorkQueue ( )
inline

Definition at line 186 of file queue_task.h.

Member Function Documentation

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::add_busy_time ( uint64_t  t)
inline

Definition at line 381 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::AreWaterMarksSet ( ) const
inlineprivate

Definition at line 406 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::AtomicDecrementQueueCount ( QueueEntryT *  entry)
inlineprivate

Definition at line 435 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::AtomicIncrementQueueCount ( QueueEntryT *  entry)
inlineprivate

Definition at line 431 of file queue_task.h.

template<typename QueueEntryT>
uint64_t WorkQueue< QueueEntryT >::busy_time ( ) const
inline

Definition at line 380 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::ClearStats ( ) const
inline

Definition at line 382 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::deleted ( ) const
inline

Definition at line 372 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::Dequeue ( QueueEntryT *  entry)
inline

Definition at line 265 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::DequeueInternal ( QueueEntryT *  entry)
inlineprivate

Definition at line 391 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::DequeueInternalLocked ( QueueEntryT *  entry)
inlineprivate

Definition at line 401 of file queue_task.h.

template<typename QueueEntryT>
std::string WorkQueue< QueueEntryT >::Description ( ) const
inline

Definition at line 310 of file queue_task.h.

template<typename QueueEntryT>
WorkQueue< QueueEntryT >::DISALLOW_COPY_AND_ASSIGN ( WorkQueue< QueueEntryT >  )
private
template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::Enqueue ( QueueEntryT  entry)
inline

Definition at line 248 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::EnqueueBounded ( QueueEntryT  entry)
inlineprivate

Definition at line 463 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::EnqueueBoundedLocked ( QueueEntryT  entry)
inlineprivate

Definition at line 480 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::EnqueueInternal ( QueueEntryT  entry)
inlineprivate

Definition at line 447 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::EnqueueInternalLocked ( QueueEntryT  entry)
inlineprivate

Definition at line 458 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::GetBounded ( ) const
inline

Definition at line 204 of file queue_task.h.

template<typename QueueEntryT>
Callback WorkQueue< QueueEntryT >::GetCallback ( ) const
inline

Definition at line 295 of file queue_task.h.

template<typename QueueEntryT>
WaterMarkInfos WorkQueue< QueueEntryT >::GetHighWaterMark ( ) const
inline

Definition at line 223 of file queue_task.h.

template<typename QueueEntryT>
WaterMarkInfos WorkQueue< QueueEntryT >::GetLowWaterMark ( ) const
inline

Definition at line 243 of file queue_task.h.

template<typename QueueEntryT>
int WorkQueue< QueueEntryT >::GetTaskId ( ) const
inline

Definition at line 273 of file queue_task.h.

template<typename QueueEntryT>
int WorkQueue< QueueEntryT >::GetTaskInstance ( ) const
inline

Definition at line 277 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::IsDisabled ( ) const
inline

Definition at line 328 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::IsQueueEmpty ( ) const
inline

Definition at line 352 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::Length ( ) const
inline

Definition at line 356 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::max_queue_len ( ) const
inline

Definition at line 377 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::MayBeStartRunner ( )
inline

Definition at line 281 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::measure_busy_time ( ) const
inline

Definition at line 378 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::NumDequeues ( ) const
inline

Definition at line 364 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::NumDrops ( ) const
inline

Definition at line 368 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::NumEnqueues ( ) const
inline

Definition at line 360 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::on_entry_defer_count ( ) const
inline

Definition at line 332 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::OnEntry ( )
inline

Definition at line 336 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::OnExit ( bool  done)
inline

Definition at line 346 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::ProcessHighWaterMarks ( size_t  count)
inlineprivate

Definition at line 439 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::ProcessLowWaterMarks ( size_t  count)
inlineprivate

Definition at line 443 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::ResetHighWaterMark ( )
inline

Definition at line 218 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::ResetLowWaterMark ( )
inline

Definition at line 238 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::RunnerAbort ( )
inlineprivate

Definition at line 490 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::RunnerAbortLocked ( )
inlineprivate

Definition at line 485 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::RunnerDone ( )
inlineprivate

Definition at line 495 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::ScheduleShutdown ( bool  delete_entries = true)
inline

Definition at line 160 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::set_disable ( bool  disabled)
inline

Definition at line 319 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::set_measure_busy_time ( bool  val) const
inline

Definition at line 379 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::set_name ( const std::string &  name)
inline

Definition at line 307 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::SetBounded ( bool  bounded)
inline

Definition at line 200 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::SetEntryCallback ( TaskEntryCallback  on_entry)
inline

Definition at line 299 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::SetExitCallback ( TaskExitCallback  on_exit)
inline

Definition at line 303 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::SetHighWaterMark ( const WaterMarkInfos high_water)
inline

Definition at line 208 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::SetHighWaterMark ( const WaterMarkInfo hwm_info)
inline

Definition at line 213 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::SetLowWaterMark ( const WaterMarkInfos low_water)
inline

Definition at line 228 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::SetLowWaterMark ( const WaterMarkInfo lwm_info)
inline

Definition at line 233 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::SetSize ( size_t  size)
inline

Definition at line 196 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::SetStartRunnerFunc ( StartRunnerFunc  start_runner_fn)
inline

Definition at line 192 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::Shutdown ( bool  delete_entries = true)
inline

Definition at line 152 of file queue_task.h.

template<typename QueueEntryT>
void WorkQueue< QueueEntryT >::ShutdownLocked ( bool  delete_entries)
inlineprivate

Definition at line 410 of file queue_task.h.

template<typename QueueEntryT>
uint32_t WorkQueue< QueueEntryT >::task_starts ( ) const
inline

Definition at line 376 of file queue_task.h.

Friends And Related Function Documentation

template<typename QueueEntryT>
friend class QueueTaskRunner< QueueEntryT, WorkQueue< QueueEntryT > >
friend

Definition at line 546 of file queue_task.h.

template<typename QueueEntryT>
friend class QueueTaskShutdownTest
friend

Definition at line 544 of file queue_task.h.

template<typename QueueEntryT>
friend class QueueTaskTest
friend

Definition at line 543 of file queue_task.h.

template<typename QueueEntryT>
friend class QueueTaskWaterMarkTest
friend

Definition at line 545 of file queue_task.h.

Member Data Documentation

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::bounded_
private

Definition at line 533 of file queue_task.h.

template<typename QueueEntryT>
uint64_t WorkQueue< QueueEntryT >::busy_time_
mutableprivate

Definition at line 540 of file queue_task.h.

template<typename QueueEntryT>
Callback WorkQueue< QueueEntryT >::callback_
private

Definition at line 520 of file queue_task.h.

template<typename QueueEntryT>
tbb::atomic<size_t> WorkQueue< QueueEntryT >::count_
private

Definition at line 514 of file queue_task.h.

template<typename QueueEntryT>
QueueTaskRunner<QueueEntryT, WorkQueue<QueueEntryT> >* WorkQueue< QueueEntryT >::current_runner_
private

Definition at line 524 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::delete_entries_on_shutdown_
private

Definition at line 535 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::deleted_
private

Definition at line 527 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::dequeues_
mutableprivate

Definition at line 529 of file queue_task.h.

template<typename QueueEntryT>
tbb::atomic<bool> WorkQueue< QueueEntryT >::disabled_
private

Definition at line 526 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::drops_
private

Definition at line 530 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::enqueues_
mutableprivate

Definition at line 528 of file queue_task.h.

template<typename QueueEntryT>
const int WorkQueue< QueueEntryT >::kMaxIterations = 32
static

Definition at line 112 of file queue_task.h.

template<typename QueueEntryT>
const int WorkQueue< QueueEntryT >::kMaxSize = 1024
static

Definition at line 111 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::max_iterations_
private

Definition at line 531 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::max_queue_len_
mutableprivate

Definition at line 539 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::measure_busy_time_
mutableprivate

Definition at line 541 of file queue_task.h.

template<typename QueueEntryT>
tbb::mutex WorkQueue< QueueEntryT >::mutex_
private

Definition at line 515 of file queue_task.h.

template<typename QueueEntryT>
std::string WorkQueue< QueueEntryT >::name_
private

Definition at line 519 of file queue_task.h.

template<typename QueueEntryT>
TaskEntryCallback WorkQueue< QueueEntryT >::on_entry_cb_
private

Definition at line 521 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::on_entry_defer_count_
private

Definition at line 525 of file queue_task.h.

template<typename QueueEntryT>
TaskExitCallback WorkQueue< QueueEntryT >::on_exit_cb_
private

Definition at line 522 of file queue_task.h.

template<typename QueueEntryT>
Queue WorkQueue< QueueEntryT >::queue_
private

Definition at line 513 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::running_
private

Definition at line 516 of file queue_task.h.

template<typename QueueEntryT>
bool WorkQueue< QueueEntryT >::shutdown_scheduled_
private

Definition at line 534 of file queue_task.h.

template<typename QueueEntryT>
size_t WorkQueue< QueueEntryT >::size_
private

Definition at line 532 of file queue_task.h.

template<typename QueueEntryT>
StartRunnerFunc WorkQueue< QueueEntryT >::start_runner_
private

Definition at line 523 of file queue_task.h.

template<typename QueueEntryT>
uint32_t WorkQueue< QueueEntryT >::task_starts_
mutableprivate

Definition at line 538 of file queue_task.h.

template<typename QueueEntryT>
int WorkQueue< QueueEntryT >::taskId_
private

Definition at line 517 of file queue_task.h.

template<typename QueueEntryT>
int WorkQueue< QueueEntryT >::taskInstance_
private

Definition at line 518 of file queue_task.h.

template<typename QueueEntryT>
tbb::mutex WorkQueue< QueueEntryT >::water_mutex_
mutableprivate

Definition at line 537 of file queue_task.h.

template<typename QueueEntryT>
WaterMarkTuple WorkQueue< QueueEntryT >::watermarks_
private

Definition at line 536 of file queue_task.h.


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