Sirikata
|
#include <FairServerMessageQueue.hpp>
Classes | |
struct | SenderAdapterQueue |
Public Member Functions | |
FairServerMessageQueue (SpaceContext *ctx, SpaceNetwork *net, Sender *sender) | |
~FairServerMessageQueue () | |
Protected Types | |
typedef FairQueue< Message, ServerID, SenderAdapterQueue > | FairSendQueue |
typedef boost::lock_guard < boost::recursive_mutex > | MutexLock |
Protected Member Functions | |
virtual void | messageReady (ServerID sid) |
Indicate that a new message is available upstream, destined for the specified server. | |
virtual void | networkReadyToSend (const ServerID &from) |
Invoked when, after a call to Network::send() fails, the network determines it can accept more data. | |
virtual void | handleUpdateReceiverStats (ServerID sid, double total_weight, double used_weight) |
void | addInputQueue (ServerID sid, float weight) |
void | removeInputQueue (ServerID sid) |
float | getAverageServerWeight () const |
void | enableDownstream (ServerID sid) |
void | disableDownstream (ServerID sid) |
void | scheduleServicing () |
void | service () |
Protected Attributes | |
FairSendQueue | mServerQueues |
Sirikata::AtomicValue< bool > | mServiceScheduled |
uint64 | mStoppedBlocked |
uint64 | mStoppedUnderflow |
boost::recursive_mutex | mMutex |
typedef FairQueue<Message, ServerID, SenderAdapterQueue> Sirikata::FairServerMessageQueue::FairSendQueue [protected] |
typedef boost::lock_guard<boost::recursive_mutex> Sirikata::FairServerMessageQueue::MutexLock [protected] |
Sirikata::FairServerMessageQueue::FairServerMessageQueue | ( | SpaceContext * | ctx, |
SpaceNetwork * | net, | ||
Sender * | sender | ||
) |
Sirikata::FairServerMessageQueue::~FairServerMessageQueue | ( | ) |
References Sirikata::Logging::info, mStoppedBlocked, mStoppedUnderflow, and SILOG.
void Sirikata::FairServerMessageQueue::addInputQueue | ( | ServerID | sid, |
float | weight | ||
) | [protected] |
void Sirikata::FairServerMessageQueue::disableDownstream | ( | ServerID | sid | ) | [protected] |
void Sirikata::FairServerMessageQueue::enableDownstream | ( | ServerID | sid | ) | [protected] |
References Sirikata::FairQueue< Message, Key, TQueue >::enableQueue(), mMutex, mServerQueues, and scheduleServicing().
Referenced by networkReadyToSend().
float Sirikata::FairServerMessageQueue::getAverageServerWeight | ( | ) | const [protected] |
References Sirikata::FairQueue< Message, Key, TQueue >::avg_weight(), and mServerQueues.
Referenced by messageReady().
void Sirikata::FairServerMessageQueue::handleUpdateReceiverStats | ( | ServerID | sid, |
double | total_weight, | ||
double | used_weight | ||
) | [protected, virtual] |
void Sirikata::FairServerMessageQueue::messageReady | ( | ServerID | sid | ) | [protected, virtual] |
Indicate that a new message is available upstream, destined for the specified server.
Implements Sirikata::ServerMessageQueue.
References addInputQueue(), getAverageServerWeight(), Sirikata::FairQueue< Message, Key, TQueue >::hasQueue(), mMutex, mServerQueues, Sirikata::FairQueue< Message, Key, TQueue >::notifyPushFront(), and scheduleServicing().
void Sirikata::FairServerMessageQueue::networkReadyToSend | ( | const ServerID & | from | ) | [protected, virtual] |
Invoked when, after a call to Network::send() fails, the network determines it can accept more data.
Implements Sirikata::ServerMessageQueue.
References enableDownstream(), Sirikata::Logging::info, Sirikata::ServerMessageQueue::mContext, Sirikata::Time::null(), SILOG, and Sirikata::Context::simTime().
void Sirikata::FairServerMessageQueue::removeInputQueue | ( | ServerID | sid | ) | [protected] |
void Sirikata::FairServerMessageQueue::scheduleServicing | ( | ) | [protected] |
References Sirikata::ServerMessageQueue::mSenderStrand, mServiceScheduled, Sirikata::Network::IOStrand::post(), Sirikata::AtomicValue< T >::read(), and service().
Referenced by enableDownstream(), messageReady(), and service().
void Sirikata::FairServerMessageQueue::service | ( | ) | [protected] |
References disableDownstream(), Sirikata::SimpleRateEstimator::estimate_rate(), Sirikata::TimeProfiler::Stage::finished(), Sirikata::FairQueue< Message, Key, TQueue >::front(), MAX_MESSAGES_PER_ROUND, Sirikata::ServerMessageQueue::mBlocked, Sirikata::ServerMessageQueue::mCapacityEstimator, Sirikata::ServerMessageQueue::mContext, mMutex, Sirikata::ServerMessageQueue::mProfiler, mServerQueues, mServiceScheduled, mStoppedBlocked, mStoppedUnderflow, Sirikata::FairQueue< Message, Key, TQueue >::pop(), scheduleServicing(), Sirikata::Context::simTime(), Sirikata::TimeProfiler::Stage::started(), and Sirikata::ServerMessageQueue::trySend().
Referenced by scheduleServicing().
boost::recursive_mutex Sirikata::FairServerMessageQueue::mMutex [mutable, protected] |
Referenced by enableDownstream(), handleUpdateReceiverStats(), messageReady(), removeInputQueue(), and service().
Sirikata::AtomicValue<bool> Sirikata::FairServerMessageQueue::mServiceScheduled [protected] |
Referenced by scheduleServicing(), and service().
uint64 Sirikata::FairServerMessageQueue::mStoppedBlocked [protected] |
Referenced by service(), and ~FairServerMessageQueue().
uint64 Sirikata::FairServerMessageQueue::mStoppedUnderflow [protected] |
Referenced by service(), and ~FairServerMessageQueue().