Sirikata
|
Fair Queue with one input queue of Messages per Key, backed by a TQueue. More...
#include <FairQueue.hpp>
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) |
Message * | front (Key *keyAtFront) |
Message * | pop (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 |
QueueInfo * | mFrontQueue |
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 |
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.
typedef QueueInfoByKey::iterator Sirikata::FairQueue< Message, Key, TQueue >::ByKeyIterator [private] |
typedef QueueInfoByFinishTime::iterator Sirikata::FairQueue< Message, Key, TQueue >::ByTimeIterator [private] |
typedef QueueInfoByKey::const_iterator Sirikata::FairQueue< Message, Key, TQueue >::ConstByKeyIterator [private] |
typedef QueueInfoByFinishTime::const_iterator Sirikata::FairQueue< Message, Key, TQueue >::ConstByTimeIterator [private] |
typedef std::set<Key> Sirikata::FairQueue< Message, Key, TQueue >::KeySet [private] |
typedef TQueue Sirikata::FairQueue< Message, Key, TQueue >::MessageQueue [private] |
typedef std::multimap<Time, QueueInfo*> Sirikata::FairQueue< Message, Key, TQueue >::QueueInfoByFinishTime [private] |
typedef std::map<Key, QueueInfo*> Sirikata::FairQueue< Message, Key, TQueue >::QueueInfoByKey [private] |
typedef std::set<QueueInfo*> Sirikata::FairQueue< Message, Key, TQueue >::QueueInfoSet [private] |
Sirikata::FairQueue< Message, Key, TQueue >::FairQueue | ( | ) | [inline] |
Sirikata::FairQueue< Message, Key, TQueue >::~FairQueue | ( | ) | [inline] |
void Sirikata::FairQueue< Message, Key, TQueue >::addQueue | ( | MessageQueue * | mq, |
Key | key, | ||
float | weight | ||
) | [inline] |
float Sirikata::FairQueue< Message, Key, TQueue >::avg_weight | ( | ) | const [inline] |
ByTimeIterator Sirikata::FairQueue< Message, Key, TQueue >::computeNextFinishTime | ( | QueueInfo * | qi, |
const Time & | last_finish_time | ||
) | [inline, protected] |
Referenced by Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::addQueue(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::computeNextFinishTime(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::notifyPushFront(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::pop(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::push(), and Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::setQueueWeight().
void Sirikata::FairQueue< Message, Key, TQueue >::computeNextFinishTime | ( | QueueInfo * | qi | ) | [inline, protected] |
void Sirikata::FairQueue< Message, Key, TQueue >::disableQueue | ( | Key | key | ) | [inline] |
Referenced by Sirikata::FairServerMessageQueue::disableDownstream().
bool Sirikata::FairQueue< Message, Key, TQueue >::empty | ( | ) | const [inline] |
Referenced by Sirikata::ForwarderServiceQueue::empty().
void Sirikata::FairQueue< Message, Key, TQueue >::enableQueue | ( | Key | key | ) | [inline] |
Referenced by Sirikata::FairServerMessageQueue::enableDownstream().
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().
Message* Sirikata::FairQueue< Message, Key, TQueue >::front | ( | Key * | keyAtFront | ) | [inline] |
Referenced by Sirikata::ForwarderServiceQueue::front(), and Sirikata::FairServerMessageQueue::service().
float Sirikata::FairQueue< Message, Key, TQueue >::getQueueWeight | ( | Key | key | ) | const [inline] |
bool Sirikata::FairQueue< Message, Key, TQueue >::hasQueue | ( | Key | key | ) | const [inline] |
Referenced by Sirikata::FairServerMessageQueue::addInputQueue(), Sirikata::ForwarderServiceQueue::checkServiceQueue(), Sirikata::FairServerMessageQueue::handleUpdateReceiverStats(), Sirikata::FairServerMessageReceiver::handleUpdateSenderStats(), Sirikata::FairServerMessageQueue::messageReady(), Sirikata::FairServerMessageReceiver::networkReceivedConnection(), and Sirikata::FairServerMessageQueue::removeInputQueue().
const_iterator Sirikata::FairQueue< Message, Key, TQueue >::keyBegin | ( | ) | const [inline] |
const_iterator Sirikata::FairQueue< Message, Key, TQueue >::keyEnd | ( | ) | const [inline] |
uint32 Sirikata::FairQueue< Message, Key, TQueue >::maxSize | ( | Key | key | ) | const [inline] |
void Sirikata::FairQueue< Message, Key, TQueue >::nextMessage | ( | Message ** | result_out, |
Time * | vftime_out, | ||
QueueInfo ** | min_queue_info_out | ||
) | [inline, protected] |
void Sirikata::FairQueue< Message, Key, TQueue >::notifyPushFront | ( | Key | key | ) | [inline] |
uint32 Sirikata::FairQueue< Message, Key, TQueue >::numQueues | ( | ) | const [inline] |
Message* Sirikata::FairQueue< Message, Key, TQueue >::pop | ( | Key * | keyAtFront = NULL | ) | [inline] |
QueueEnum::PushResult Sirikata::FairQueue< Message, Key, TQueue >::push | ( | Key | key, |
Message * | msg | ||
) | [inline] |
Referenced by Sirikata::ForwarderServiceQueue::push().
void Sirikata::FairQueue< Message, Key, TQueue >::removeFromTimeIndex | ( | QueueInfo * | qi | ) | [inline, protected] |
Referenced by Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::notifyPushFront(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::pop(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::removeQueue(), and Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::setQueueWeight().
bool Sirikata::FairQueue< Message, Key, TQueue >::removeQueue | ( | Key | key | ) | [inline] |
void Sirikata::FairQueue< Message, Key, TQueue >::setQueueWeight | ( | Key | key, |
float | weight | ||
) | [inline] |
uint32 Sirikata::FairQueue< Message, Key, TQueue >::size | ( | Key | key | ) | const [inline] |
Referenced by Sirikata::ForwarderServiceQueue::size().
const Duration Sirikata::FairQueue< Message, Key, TQueue >::default_tx_time [protected] |
Time Sirikata::FairQueue< Message, Key, TQueue >::mCurrentVirtualTime [protected] |
QueueInfo* Sirikata::FairQueue< Message, Key, TQueue >::mFrontQueue [protected] |
Referenced by Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::addQueue(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::disableQueue(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::enableQueue(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::front(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::notifyPushFront(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::pop(), and Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::removeQueue().
const Duration Sirikata::FairQueue< Message, Key, TQueue >::min_tx_time [protected] |
QueueInfoByKey Sirikata::FairQueue< Message, Key, TQueue >::mQueuesByKey [protected] |
Referenced by Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::addQueue(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::avg_weight(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::disableQueue(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::enableQueue(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::getQueueWeight(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::hasQueue(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::keyBegin(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::keyEnd(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::maxSize(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::notifyPushFront(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::numQueues(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::push(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::removeQueue(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::setQueueWeight(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::size(), and Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::~FairQueue().
QueueInfoByFinishTime Sirikata::FairQueue< Message, Key, TQueue >::mQueuesByTime [protected] |
Referenced by Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::computeNextFinishTime(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::empty(), Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::nextMessage(), and Sirikata::FairQueue< Message, ServerID, NetworkQueueWrapper >::removeFromTimeIndex().
uint32 Sirikata::FairQueue< Message, Key, TQueue >::mRate [protected] |
uint32 Sirikata::FairQueue< Message, Key, TQueue >::warn_count [mutable, protected] |
const Duration Sirikata::FairQueue< Message, Key, TQueue >::zero_time [protected] |