Sirikata
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Private Types
Sirikata::FairQueue< Message, Key, TQueue > Class Template Reference

Fair Queue with one input queue of Messages per Key, backed by a TQueue. More...

#include <FairQueue.hpp>

Collaboration diagram for Sirikata::FairQueue< Message, Key, TQueue >:

List of all members.

Classes

class  const_iterator
struct  QueueInfo

Public Member Functions

 FairQueue ()
 ~FairQueue ()
void addQueue (MessageQueue *mq, Key key, float weight)
void setQueueWeight (Key key, float weight)
float getQueueWeight (Key key) const
bool removeQueue (Key key)
void enableQueue (Key key)
void disableQueue (Key key)
bool hasQueue (Key key) const
uint32 numQueues () const
QueueEnum::PushResult push (Key key, Message *msg)
void notifyPushFront (Key key)
Messagefront (Key *keyAtFront)
Messagepop (Key *keyAtFront=NULL)
bool empty () const
uint32 maxSize (Key key) const
uint32 size (Key key) const
float avg_weight () const
const_iterator keyBegin () const
const_iterator keyEnd () const

Protected Member Functions

void nextMessage (Message **result_out, Time *vftime_out, QueueInfo **min_queue_info_out)
void removeFromTimeIndex (QueueInfo *qi)
ByTimeIterator computeNextFinishTime (QueueInfo *qi, const Time &last_finish_time)
void computeNextFinishTime (QueueInfo *qi)
Time finishTime (uint32 size, QueueInfo *qi, const Time &last_finish_time) const
 Finish time for a packet that was inserted into a non-empty queue, i.e.

Protected Attributes

const Duration zero_time
const Duration min_tx_time
const Duration default_tx_time
uint32 warn_count
uint32 mRate
Time mCurrentVirtualTime
QueueInfoByKey mQueuesByKey
QueueInfoByFinishTime mQueuesByTime
QueueInfomFrontQueue

Private Types

typedef TQueue MessageQueue
typedef std::map< Key,
QueueInfo * > 
QueueInfoByKey
typedef std::multimap< Time,
QueueInfo * > 
QueueInfoByFinishTime
typedef QueueInfoByKey::iterator ByKeyIterator
typedef
QueueInfoByKey::const_iterator 
ConstByKeyIterator
typedef
QueueInfoByFinishTime::iterator 
ByTimeIterator
typedef
QueueInfoByFinishTime::const_iterator 
ConstByTimeIterator
typedef std::set< Key > KeySet
typedef std::set< QueueInfo * > QueueInfoSet

Detailed Description

template<class Message, class Key, class TQueue>
class Sirikata::FairQueue< Message, Key, TQueue >

Fair Queue with one input queue of Messages per Key, backed by a TQueue.

Each input queue can be assigned a weight and selection happens according to FairQueuing.


Member Typedef Documentation

template<class Message, class Key, class TQueue>
typedef QueueInfoByKey::iterator Sirikata::FairQueue< Message, Key, TQueue >::ByKeyIterator [private]
template<class Message, class Key, class TQueue>
typedef QueueInfoByFinishTime::iterator Sirikata::FairQueue< Message, Key, TQueue >::ByTimeIterator [private]
template<class Message, class Key, class TQueue>
typedef QueueInfoByKey::const_iterator Sirikata::FairQueue< Message, Key, TQueue >::ConstByKeyIterator [private]
template<class Message, class Key, class TQueue>
typedef QueueInfoByFinishTime::const_iterator Sirikata::FairQueue< Message, Key, TQueue >::ConstByTimeIterator [private]
template<class Message, class Key, class TQueue>
typedef std::set<Key> Sirikata::FairQueue< Message, Key, TQueue >::KeySet [private]
template<class Message, class Key, class TQueue>
typedef TQueue Sirikata::FairQueue< Message, Key, TQueue >::MessageQueue [private]
template<class Message, class Key, class TQueue>
typedef std::multimap<Time, QueueInfo*> Sirikata::FairQueue< Message, Key, TQueue >::QueueInfoByFinishTime [private]
template<class Message, class Key, class TQueue>
typedef std::map<Key, QueueInfo*> Sirikata::FairQueue< Message, Key, TQueue >::QueueInfoByKey [private]
template<class Message, class Key, class TQueue>
typedef std::set<QueueInfo*> Sirikata::FairQueue< Message, Key, TQueue >::QueueInfoSet [private]

Constructor & Destructor Documentation

template<class Message, class Key, class TQueue>
Sirikata::FairQueue< Message, Key, TQueue >::FairQueue ( ) [inline]
template<class Message, class Key, class TQueue>
Sirikata::FairQueue< Message, Key, TQueue >::~FairQueue ( ) [inline]

Member Function Documentation

template<class Message, class Key, class TQueue>
void Sirikata::FairQueue< Message, Key, TQueue >::addQueue ( MessageQueue mq,
Key  key,
float  weight 
) [inline]
template<class Message, class Key, class TQueue>
float Sirikata::FairQueue< Message, Key, TQueue >::avg_weight ( ) const [inline]
template<class Message, class Key, class TQueue>
ByTimeIterator Sirikata::FairQueue< Message, Key, TQueue >::computeNextFinishTime ( QueueInfo qi,
const Time last_finish_time 
) [inline, protected]
template<class Message, class Key, class TQueue>
void Sirikata::FairQueue< Message, Key, TQueue >::computeNextFinishTime ( QueueInfo qi) [inline, protected]
template<class Message, class Key, class TQueue>
void Sirikata::FairQueue< Message, Key, TQueue >::disableQueue ( Key  key) [inline]
template<class Message, class Key, class TQueue>
bool Sirikata::FairQueue< Message, Key, TQueue >::empty ( ) const [inline]
template<class Message, class Key, class TQueue>
void Sirikata::FairQueue< Message, Key, TQueue >::enableQueue ( Key  key) [inline]
template<class Message, class Key, class TQueue>
Time Sirikata::FairQueue< Message, Key, TQueue >::finishTime ( uint32  size,
QueueInfo qi,
const Time last_finish_time 
) const [inline, protected]

Finish time for a packet that was inserted into a non-empty queue, i.e.

based on the previous packet's finish time.

Referenced by Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::computeNextFinishTime().

template<class Message, class Key, class TQueue>
Message* Sirikata::FairQueue< Message, Key, TQueue >::front ( Key *  keyAtFront) [inline]
template<class Message, class Key, class TQueue>
float Sirikata::FairQueue< Message, Key, TQueue >::getQueueWeight ( Key  key) const [inline]
template<class Message, class Key, class TQueue>
bool Sirikata::FairQueue< Message, Key, TQueue >::hasQueue ( Key  key) const [inline]
template<class Message, class Key, class TQueue>
const_iterator Sirikata::FairQueue< Message, Key, TQueue >::keyBegin ( ) const [inline]
template<class Message, class Key, class TQueue>
const_iterator Sirikata::FairQueue< Message, Key, TQueue >::keyEnd ( ) const [inline]
template<class Message, class Key, class TQueue>
uint32 Sirikata::FairQueue< Message, Key, TQueue >::maxSize ( Key  key) const [inline]
template<class Message, class Key, class TQueue>
void Sirikata::FairQueue< Message, Key, TQueue >::nextMessage ( Message **  result_out,
Time vftime_out,
QueueInfo **  min_queue_info_out 
) [inline, protected]
template<class Message, class Key, class TQueue>
void Sirikata::FairQueue< Message, Key, TQueue >::notifyPushFront ( Key  key) [inline]
template<class Message, class Key, class TQueue>
uint32 Sirikata::FairQueue< Message, Key, TQueue >::numQueues ( ) const [inline]
template<class Message, class Key, class TQueue>
Message* Sirikata::FairQueue< Message, Key, TQueue >::pop ( Key *  keyAtFront = NULL) [inline]
template<class Message, class Key, class TQueue>
QueueEnum::PushResult Sirikata::FairQueue< Message, Key, TQueue >::push ( Key  key,
Message msg 
) [inline]
template<class Message, class Key, class TQueue>
void Sirikata::FairQueue< Message, Key, TQueue >::removeFromTimeIndex ( QueueInfo qi) [inline, protected]
template<class Message, class Key, class TQueue>
bool Sirikata::FairQueue< Message, Key, TQueue >::removeQueue ( Key  key) [inline]
template<class Message, class Key, class TQueue>
void Sirikata::FairQueue< Message, Key, TQueue >::setQueueWeight ( Key  key,
float  weight 
) [inline]
template<class Message, class Key, class TQueue>
uint32 Sirikata::FairQueue< Message, Key, TQueue >::size ( Key  key) const [inline]

Member Data Documentation

template<class Message, class Key, class TQueue>
const Duration Sirikata::FairQueue< Message, Key, TQueue >::default_tx_time [protected]
template<class Message, class Key, class TQueue>
Time Sirikata::FairQueue< Message, Key, TQueue >::mCurrentVirtualTime [protected]
template<class Message, class Key, class TQueue>
QueueInfo* Sirikata::FairQueue< Message, Key, TQueue >::mFrontQueue [protected]
template<class Message, class Key, class TQueue>
const Duration Sirikata::FairQueue< Message, Key, TQueue >::min_tx_time [protected]
template<class Message, class Key, class TQueue>
QueueInfoByKey Sirikata::FairQueue< Message, Key, TQueue >::mQueuesByKey [protected]
template<class Message, class Key, class TQueue>
QueueInfoByFinishTime Sirikata::FairQueue< Message, Key, TQueue >::mQueuesByTime [protected]
template<class Message, class Key, class TQueue>
uint32 Sirikata::FairQueue< Message, Key, TQueue >::mRate [protected]
template<class Message, class Key, class TQueue>
uint32 Sirikata::FairQueue< Message, Key, TQueue >::warn_count [mutable, protected]
template<class Message, class Key, class TQueue>
const Duration Sirikata::FairQueue< Message, Key, TQueue >::zero_time [protected]

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