Impala
Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.
|
T must be a subclass of InternalQueue::Node. More...
#include <internal-queue.h>
Classes | |
struct | Node |
Public Member Functions | |
InternalQueue () | |
T * | head () const |
T * | tail () |
void | Enqueue (T *n) |
Enqueue node onto the queue's tail. This is O(1). More... | |
T * | Dequeue () |
T * | PopBack () |
void | Remove (T *n) |
void | Clear () |
Clears all elements in the list. More... | |
int | size () const |
bool | empty () const |
bool | Contains (const T *target) const |
bool | Validate () |
Validates the internal structure of the list. More... | |
std::string | DebugString () |
Prints the queue ptrs to a string. More... | |
Private Attributes | |
SpinLock | lock_ |
Node * | head_ |
Node * | tail_ |
int | size_ |
Friends | |
struct | Node |
T must be a subclass of InternalQueue::Node.
Thread safe fifo-queue. This is an internal queue, meaning the links to nodes are maintained in the object itself. This is in contrast to the stl list which allocates a wrapper Node object around the data. Since it's an internal queue, the list pointers are maintained in the Nodes which is memory owned by the user. The nodes cannot be deallocated while the queue has elements. To use: subclass InternalQueue::Node. The internal structure is a doubly-linked list. NULL <– N1 <–> N2 <–> N3 –> NULL (head) (tail) TODO: this is an ideal candidate to be made lock free.
Definition at line 40 of file internal-queue.h.
|
inline |
Definition at line 66 of file internal-queue.h.
|
inline |
Clears all elements in the list.
Definition at line 184 of file internal-queue.h.
Referenced by impala::TEST().
|
inline |
Returns if the target is on the queue. This is O(1) and intended to be used for debugging.
Definition at line 202 of file internal-queue.h.
Referenced by impala::AdmissionController::AdmitQuery().
|
inline |
Prints the queue ptrs to a string.
Definition at line 234 of file internal-queue.h.
|
inline |
Dequeues an element from the queue's head. Returns NULL if the queue is empty. This is O(1).
Definition at line 103 of file internal-queue.h.
Referenced by impala::ConsumerThread(), impala::AdmissionController::DequeueLoop(), and impala::TEST().
|
inline |
Definition at line 198 of file internal-queue.h.
Referenced by impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Dequeue(), impala::AdmissionController::DequeueLoop(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::head(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::PopBack(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::tail(), and impala::TEST().
|
inline |
Enqueue node onto the queue's tail. This is O(1).
Definition at line 85 of file internal-queue.h.
Referenced by impala::AdmissionController::AdmitQuery(), impala::ProducerThread(), and impala::TEST().
|
inline |
Returns the element at the head of the list without dequeuing or NULL if the queue is empty. This is O(1).
Definition at line 70 of file internal-queue.h.
Referenced by impala::AdmissionController::DequeueLoop(), and impala::TEST().
|
inline |
Dequeues an element from the queue's tail. Returns NULL if the queue is empty. This is O(1).
Definition at line 125 of file internal-queue.h.
Referenced by impala::TEST().
|
inline |
Removes 'node' from the queue. This is O(1). No-op if node is not on the list.
Definition at line 147 of file internal-queue.h.
Referenced by impala::AdmissionController::AdmitQuery(), and impala::TEST().
|
inline |
Definition at line 197 of file internal-queue.h.
Referenced by impala::TEST(), and impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Validate().
|
inline |
Returns the element at the end of the list without dequeuing or NULL if the queue is empty. This is O(1).
Definition at line 78 of file internal-queue.h.
Referenced by impala::TEST().
|
inline |
Validates the internal structure of the list.
Definition at line 207 of file internal-queue.h.
Referenced by impala::ConsumerThread(), impala::ProducerThread(), and impala::TEST().
|
friend |
Definition at line 250 of file internal-queue.h.
Referenced by impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Clear(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::DebugString(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Dequeue(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Enqueue(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::PopBack(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Remove(), and impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Validate().
|
private |
Definition at line 252 of file internal-queue.h.
Referenced by impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Clear(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::DebugString(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Dequeue(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::empty(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Enqueue(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::head(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::PopBack(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Remove(), and impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Validate().
|
mutableprivate |
Definition at line 251 of file internal-queue.h.
Referenced by impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Clear(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::DebugString(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Dequeue(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Enqueue(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::head(), impala::InternalQueue< T >::Node::Next(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::PopBack(), impala::InternalQueue< T >::Node::Prev(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Remove(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::tail(), and impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Validate().
|
private |
Definition at line 253 of file internal-queue.h.
Referenced by impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Clear(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Dequeue(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Enqueue(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::PopBack(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Remove(), and impala::InternalQueue< impala::DiskIoMgr::WriteRange >::size().
|
private |
Definition at line 252 of file internal-queue.h.
Referenced by impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Clear(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Dequeue(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Enqueue(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::PopBack(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Remove(), impala::InternalQueue< impala::DiskIoMgr::WriteRange >::tail(), and impala::InternalQueue< impala::DiskIoMgr::WriteRange >::Validate().