CMSDK 2.0.1
Cross-platform C++ base library and SDK for the Psyclone AIOS platform
Loading...
Searching...
No Matches
cmlabs::utils::TimeQueue< T > Class Template Reference

Thread-safe queue of entries ordered by due time; entries become retrievable once their timestamp passes. More...

#include <Utils.h>

Inheritance diagram for cmlabs::utils::TimeQueue< T >:
[legend]
Collaboration diagram for cmlabs::utils::TimeQueue< T >:
[legend]

Public Member Functions

 TimeQueue ()
virtual ~TimeQueue ()
bool add (uint64 time, T entry)
 Insert an entry sorted by its due time.
uint32 getCount ()
 Number of scheduled entries.
bool getNextEntryDue (T &entry)
 Pop the earliest entry if its due time has passed (non-blocking).
virtual bool clear ()
 Discard all scheduled entries.

Protected Attributes

Mutex mutex
std::list< TimeQueueEntry< T > > internalList

Detailed Description

template<typename T>
class cmlabs::utils::TimeQueue< T >

Thread-safe queue of entries ordered by due time; entries become retrievable once their timestamp passes.

Template Parameters
TElement type (copied by value); see TimeQueuePointer for owned heap pointers.

Definition at line 866 of file Utils.h.

Constructor & Destructor Documentation

◆ TimeQueue()

template<typename T>
cmlabs::utils::TimeQueue< T >::TimeQueue ( )
inline

Definition at line 868 of file Utils.h.

◆ ~TimeQueue()

template<typename T>
virtual cmlabs::utils::TimeQueue< T >::~TimeQueue ( )
inlinevirtual

Definition at line 869 of file Utils.h.

Member Function Documentation

◆ add()

template<typename T>
bool cmlabs::utils::TimeQueue< T >::add ( uint64 time,
T entry )
inline

Insert an entry sorted by its due time.

Parameters
timeDue time (ms, GetTimeNow() scale).
entryValue to schedule.
Returns
true on success.

Definition at line 872 of file Utils.h.

References cmlabs::utils::TimeQueueEntry< T >::entry, internalList, mutex, and cmlabs::utils::TimeQueueEntry< T >::time.

◆ clear()

template<typename T>
virtual bool cmlabs::utils::TimeQueue< T >::clear ( )
inlinevirtual

Discard all scheduled entries.

Returns
true on success.

Reimplemented in cmlabs::utils::TimeQueuePointer< T >.

Definition at line 922 of file Utils.h.

References internalList, and mutex.

◆ getCount()

template<typename T>
uint32 cmlabs::utils::TimeQueue< T >::getCount ( )
inline

Number of scheduled entries.

Returns
Count, or 0 when the lock could not be taken.

Definition at line 893 of file Utils.h.

References internalList, and mutex.

◆ getNextEntryDue()

template<typename T>
bool cmlabs::utils::TimeQueue< T >::getNextEntryDue ( T & entry)
inline

Pop the earliest entry if its due time has passed (non-blocking).

Parameters
[out]entryReceives the due entry.
Returns
true when an entry was due and removed.

Definition at line 903 of file Utils.h.

References cmlabs::utils::TimeQueueEntry< T >::entry, cmlabs::GetTimeNow(), internalList, mutex, and cmlabs::utils::TimeQueueEntry< T >::time.

Referenced by cmlabs::utils::TimeQueuePointer< T >::getNextEntryDue().

Member Data Documentation

◆ internalList

template<typename T>
std::list< TimeQueueEntry<T> > cmlabs::utils::TimeQueue< T >::internalList
protected

◆ mutex

template<typename T>
Mutex cmlabs::utils::TimeQueue< T >::mutex
protected

The documentation for this class was generated from the following file:
  • /home/ubuntu/c/partner/psyclone2/CMSDK/include/Utils.h