OpenSDN source code
|
#include <queue_task.h>
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 > > |
Definition at line 109 of file queue_task.h.
typedef boost::function<bool (QueueEntryT)> WorkQueue< QueueEntryT >::Callback |
Definition at line 114 of file queue_task.h.
typedef tbb::concurrent_queue<QueueEntryT> WorkQueue< QueueEntryT >::Queue |
Definition at line 113 of file queue_task.h.
typedef boost::function<bool (void)> WorkQueue< QueueEntryT >::StartRunnerFunc |
Definition at line 115 of file queue_task.h.
typedef boost::function<bool ()> WorkQueue< QueueEntryT >::TaskEntryCallback |
Definition at line 117 of file queue_task.h.
typedef boost::function<void (bool)> WorkQueue< QueueEntryT >::TaskExitCallback |
Definition at line 116 of file queue_task.h.
|
inline |
Definition at line 119 of file queue_task.h.
Definition at line 186 of file queue_task.h.
|
inline |
Definition at line 381 of file queue_task.h.
|
inlineprivate |
Definition at line 406 of file queue_task.h.
|
inlineprivate |
Definition at line 435 of file queue_task.h.
|
inlineprivate |
Definition at line 431 of file queue_task.h.
|
inline |
Definition at line 380 of file queue_task.h.
|
inline |
Definition at line 382 of file queue_task.h.
|
inline |
Definition at line 372 of file queue_task.h.
|
inline |
Definition at line 265 of file queue_task.h.
|
inlineprivate |
Definition at line 391 of file queue_task.h.
|
inlineprivate |
Definition at line 401 of file queue_task.h.
|
inline |
Definition at line 310 of file queue_task.h.
|
private |
|
inline |
Definition at line 248 of file queue_task.h.
|
inlineprivate |
Definition at line 463 of file queue_task.h.
|
inlineprivate |
Definition at line 480 of file queue_task.h.
|
inlineprivate |
Definition at line 447 of file queue_task.h.
|
inlineprivate |
Definition at line 458 of file queue_task.h.
|
inline |
Definition at line 204 of file queue_task.h.
Definition at line 295 of file queue_task.h.
|
inline |
Definition at line 223 of file queue_task.h.
|
inline |
Definition at line 243 of file queue_task.h.
|
inline |
Definition at line 273 of file queue_task.h.
|
inline |
Definition at line 277 of file queue_task.h.
|
inline |
Definition at line 328 of file queue_task.h.
|
inline |
Definition at line 352 of file queue_task.h.
|
inline |
Definition at line 356 of file queue_task.h.
|
inline |
Definition at line 377 of file queue_task.h.
|
inline |
Definition at line 281 of file queue_task.h.
|
inline |
Definition at line 378 of file queue_task.h.
|
inline |
Definition at line 364 of file queue_task.h.
|
inline |
Definition at line 368 of file queue_task.h.
|
inline |
Definition at line 360 of file queue_task.h.
|
inline |
Definition at line 332 of file queue_task.h.
|
inline |
Definition at line 336 of file queue_task.h.
|
inline |
Definition at line 346 of file queue_task.h.
|
inlineprivate |
Definition at line 439 of file queue_task.h.
|
inlineprivate |
Definition at line 443 of file queue_task.h.
|
inline |
Definition at line 218 of file queue_task.h.
|
inline |
Definition at line 238 of file queue_task.h.
|
inlineprivate |
Definition at line 490 of file queue_task.h.
|
inlineprivate |
Definition at line 485 of file queue_task.h.
|
inlineprivate |
Definition at line 495 of file queue_task.h.
|
inline |
Definition at line 160 of file queue_task.h.
|
inline |
Definition at line 319 of file queue_task.h.
|
inline |
Definition at line 379 of file queue_task.h.
|
inline |
Definition at line 307 of file queue_task.h.
|
inline |
Definition at line 200 of file queue_task.h.
|
inline |
Definition at line 299 of file queue_task.h.
|
inline |
Definition at line 303 of file queue_task.h.
|
inline |
Definition at line 208 of file queue_task.h.
|
inline |
Definition at line 213 of file queue_task.h.
|
inline |
Definition at line 228 of file queue_task.h.
|
inline |
Definition at line 233 of file queue_task.h.
|
inline |
Definition at line 196 of file queue_task.h.
|
inline |
Definition at line 192 of file queue_task.h.
|
inline |
Definition at line 152 of file queue_task.h.
|
inlineprivate |
Definition at line 410 of file queue_task.h.
|
inline |
Definition at line 376 of file queue_task.h.
|
friend |
Definition at line 546 of file queue_task.h.
|
friend |
Definition at line 544 of file queue_task.h.
|
friend |
Definition at line 543 of file queue_task.h.
|
friend |
Definition at line 545 of file queue_task.h.
|
private |
Definition at line 533 of file queue_task.h.
|
mutableprivate |
Definition at line 540 of file queue_task.h.
Definition at line 520 of file queue_task.h.
|
private |
Definition at line 514 of file queue_task.h.
|
private |
Definition at line 524 of file queue_task.h.
|
private |
Definition at line 535 of file queue_task.h.
|
private |
Definition at line 527 of file queue_task.h.
|
mutableprivate |
Definition at line 529 of file queue_task.h.
|
private |
Definition at line 526 of file queue_task.h.
|
private |
Definition at line 530 of file queue_task.h.
|
mutableprivate |
Definition at line 528 of file queue_task.h.
|
static |
Definition at line 112 of file queue_task.h.
|
static |
Definition at line 111 of file queue_task.h.
|
private |
Definition at line 531 of file queue_task.h.
|
mutableprivate |
Definition at line 539 of file queue_task.h.
|
mutableprivate |
Definition at line 541 of file queue_task.h.
|
private |
Definition at line 515 of file queue_task.h.
|
private |
Definition at line 519 of file queue_task.h.
|
private |
Definition at line 521 of file queue_task.h.
|
private |
Definition at line 525 of file queue_task.h.
|
private |
Definition at line 522 of file queue_task.h.
Definition at line 513 of file queue_task.h.
|
private |
Definition at line 516 of file queue_task.h.
|
private |
Definition at line 534 of file queue_task.h.
|
private |
Definition at line 532 of file queue_task.h.
|
private |
Definition at line 523 of file queue_task.h.
|
mutableprivate |
Definition at line 538 of file queue_task.h.
|
private |
Definition at line 517 of file queue_task.h.
|
private |
Definition at line 518 of file queue_task.h.
|
mutableprivate |
Definition at line 537 of file queue_task.h.
|
private |
Definition at line 536 of file queue_task.h.