Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
Skyfire::LockedQueue< T, LockType, StorageType > Class Template Reference

#include <LockedQueue.h>

Public Member Functions

std::size_t add (const T &item)
 Adds an item to the queue.
void cancel ()
 Cancels the queue.
bool cancelled ()
 Checks if the queue is cancelled.
bool empty ()
 ! Checks if we're empty or not with locks held
void lock ()
 Locks the queue for access.
 LockedQueue ()
 Create a LockedQueue.
bool next (T &result)
 Gets the next result in the queue, if any.
template<class Checker>
bool next (T &result, Checker &check)
T & peek (bool autoUnlock=false)
 Peeks at the top of the queue. Check if the queue is empty before calling! Remember to unlock after use if autoUnlock == false.
void pop_front ()
 ! Calls pop_front of the queue
std::size_t size ()
 ! Returns current queue depth with locks held
void unlock ()
 Unlocks the queue.
virtual ~LockedQueue ()
 Destroy a LockedQueue.

Private Attributes

volatile bool _canceled
 Cancellation flag.
LockType _lock
 Lock access to the queue.
StorageType _queue
 Storage backing the queue.

Detailed Description

template<class T, class LockType, typename StorageType = std::deque<T>>
class Skyfire::LockedQueue< T, LockType, StorageType >

Definition at line 19 of file LockedQueue.h.

Constructor & Destructor Documentation

◆ LockedQueue()

template<class T, class LockType, typename StorageType = std::deque<T>>
Skyfire::LockedQueue< T, LockType, StorageType >::LockedQueue ( )
inline

Create a LockedQueue.

Definition at line 32 of file LockedQueue.h.

References _canceled.

◆ ~LockedQueue()

template<class T, class LockType, typename StorageType = std::deque<T>>
virtual Skyfire::LockedQueue< T, LockType, StorageType >::~LockedQueue ( )
inlinevirtual

Destroy a LockedQueue.

Definition at line 35 of file LockedQueue.h.

Member Function Documentation

◆ add()

template<class T, class LockType, typename StorageType = std::deque<T>>
std::size_t Skyfire::LockedQueue< T, LockType, StorageType >::add ( const T & item)
inline

Adds an item to the queue.

Definition at line 38 of file LockedQueue.h.

References _queue.

◆ cancel()

template<class T, class LockType, typename StorageType = std::deque<T>>
void Skyfire::LockedQueue< T, LockType, StorageType >::cancel ( )
inline

Cancels the queue.

Definition at line 96 of file LockedQueue.h.

References _canceled, lock(), and unlock().

◆ cancelled()

template<class T, class LockType, typename StorageType = std::deque<T>>
bool Skyfire::LockedQueue< T, LockType, StorageType >::cancelled ( )
inline

Checks if the queue is cancelled.

Definition at line 106 of file LockedQueue.h.

References _canceled.

◆ empty()

template<class T, class LockType, typename StorageType = std::deque<T>>
bool Skyfire::LockedQueue< T, LockType, StorageType >::empty ( )
inline

! Checks if we're empty or not with locks held

Definition at line 132 of file LockedQueue.h.

References _queue.

◆ lock()

template<class T, class LockType, typename StorageType = std::deque<T>>
void Skyfire::LockedQueue< T, LockType, StorageType >::lock ( )
inline

Locks the queue for access.

Definition at line 113 of file LockedQueue.h.

Referenced by cancel(), and peek().

◆ next() [1/2]

template<class T, class LockType, typename StorageType = std::deque<T>>
bool Skyfire::LockedQueue< T, LockType, StorageType >::next ( T & result)
inline

Gets the next result in the queue, if any.

Definition at line 51 of file LockedQueue.h.

References _queue.

◆ next() [2/2]

template<class T, class LockType, typename StorageType = std::deque<T>>
template<class Checker>
bool Skyfire::LockedQueue< T, LockType, StorageType >::next ( T & result,
Checker & check )
inline

Definition at line 67 of file LockedQueue.h.

References _queue.

◆ peek()

template<class T, class LockType, typename StorageType = std::deque<T>>
T & Skyfire::LockedQueue< T, LockType, StorageType >::peek ( bool autoUnlock = false)
inline

Peeks at the top of the queue. Check if the queue is empty before calling! Remember to unlock after use if autoUnlock == false.

Definition at line 83 of file LockedQueue.h.

References _queue, lock(), and unlock().

◆ pop_front()

template<class T, class LockType, typename StorageType = std::deque<T>>
void Skyfire::LockedQueue< T, LockType, StorageType >::pop_front ( )
inline

! Calls pop_front of the queue

Definition at line 125 of file LockedQueue.h.

References _queue.

◆ size()

template<class T, class LockType, typename StorageType = std::deque<T>>
std::size_t Skyfire::LockedQueue< T, LockType, StorageType >::size ( )
inline

! Returns current queue depth with locks held

Definition at line 139 of file LockedQueue.h.

References _queue.

◆ unlock()

template<class T, class LockType, typename StorageType = std::deque<T>>
void Skyfire::LockedQueue< T, LockType, StorageType >::unlock ( )
inline

Unlocks the queue.

Definition at line 119 of file LockedQueue.h.

Referenced by cancel(), and peek().

Member Data Documentation

◆ _canceled

template<class T, class LockType, typename StorageType = std::deque<T>>
volatile bool Skyfire::LockedQueue< T, LockType, StorageType >::_canceled
private

Cancellation flag.

Definition at line 28 of file LockedQueue.h.

Referenced by cancel(), cancelled(), and LockedQueue().

◆ _lock

template<class T, class LockType, typename StorageType = std::deque<T>>
LockType Skyfire::LockedQueue< T, LockType, StorageType >::_lock
private

Lock access to the queue.

Definition at line 22 of file LockedQueue.h.

◆ _queue

template<class T, class LockType, typename StorageType = std::deque<T>>
StorageType Skyfire::LockedQueue< T, LockType, StorageType >::_queue
private

Storage backing the queue.

Definition at line 25 of file LockedQueue.h.

Referenced by add(), empty(), next(), next(), peek(), pop_front(), and size().


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