Sirikata
|
#include <ServerMessageQueue.hpp>
Classes | |
class | Sender |
Implement the Sender interface to set a class up to feed messages into the ServerMessageQueue. More... | |
Public Member Functions | |
ServerMessageQueue (SpaceContext *ctx, SpaceNetwork *net, Sender *sender) | |
virtual | ~ServerMessageQueue () |
virtual void | messageReady (ServerID sid)=0 |
Indicate that a new message is available upstream, destined for the specified server. | |
double | totalUsedWeight () |
double | capacity () |
void | updateReceiverStats (ServerID sid, double total_weight, double used_weight) |
bool | isBlocked () const |
Protected Types | |
typedef std::tr1::unordered_map < ServerID, SpaceNetwork::SendStream * > | SendStreamMap |
typedef std::tr1::unordered_map < ServerID, double > | WeightMap |
Protected Member Functions | |
void | connect (const ServerID &dest) |
virtual void | networkReadyToSend (const ServerID &from)=0 |
Invoked when, after a call to Network::send() fails, the network determines it can accept more data. | |
virtual void | updatedSegmentation (CoordinateSegmentation *cseg, const std::vector< SegmentationInfo > &new_segmentation) |
virtual void | handleUpdateReceiverStats (ServerID sid, double total_weight, double used_weight)=0 |
uint32 | trySend (const ServerID &addr, const Message *msg) |
Protected Attributes | |
double | mCapacityOverestimate |
SpaceContext * | mContext |
Network::IOStrand * | mSenderStrand |
SpaceNetwork * | mNetwork |
TimeProfiler::Stage * | mProfiler |
Sender * | mSender |
SendStreamMap | mSendStreams |
WeightMap | mUsedWeights |
double | mUsedWeightSum |
SimpleRateEstimator | mCapacityEstimator |
bool | mBlocked |
typedef std::tr1::unordered_map<ServerID, SpaceNetwork::SendStream*> Sirikata::ServerMessageQueue::SendStreamMap [protected] |
typedef std::tr1::unordered_map<ServerID, double> Sirikata::ServerMessageQueue::WeightMap [protected] |
Sirikata::ServerMessageQueue::ServerMessageQueue | ( | SpaceContext * | ctx, |
SpaceNetwork * | net, | ||
Sender * | sender | ||
) |
Sirikata::ServerMessageQueue::~ServerMessageQueue | ( | ) | [virtual] |
References mProfiler, and mSenderStrand.
double Sirikata::ServerMessageQueue::capacity | ( | ) |
References Sirikata::RateEstimator::get(), mBlocked, and mCapacityEstimator.
Referenced by Sirikata::Forwarder::receiveWeightUpdateMessage(), and Sirikata::Forwarder::updateServerWeights().
void Sirikata::ServerMessageQueue::connect | ( | const ServerID & | dest | ) | [protected] |
References Sirikata::SpaceNetwork::connect(), mNetwork, mSenderStrand, and mSendStreams.
Referenced by trySend().
virtual void Sirikata::ServerMessageQueue::handleUpdateReceiverStats | ( | ServerID | sid, |
double | total_weight, | ||
double | used_weight | ||
) | [protected, pure virtual] |
Implemented in Sirikata::FairServerMessageQueue.
Referenced by updateReceiverStats().
bool Sirikata::ServerMessageQueue::isBlocked | ( | ) | const [inline] |
References mBlocked.
Referenced by Sirikata::Forwarder::updateServerWeights().
virtual void Sirikata::ServerMessageQueue::messageReady | ( | ServerID | sid | ) | [pure virtual] |
Indicate that a new message is available upstream, destined for the specified server.
Implemented in Sirikata::FairServerMessageQueue.
Referenced by Sirikata::Forwarder::forwarderServiceMessageReady().
virtual void Sirikata::ServerMessageQueue::networkReadyToSend | ( | const ServerID & | from | ) | [protected, pure virtual] |
Invoked when, after a call to Network::send() fails, the network determines it can accept more data.
Implements Sirikata::SpaceNetwork::SendListener.
Implemented in Sirikata::FairServerMessageQueue.
double Sirikata::ServerMessageQueue::totalUsedWeight | ( | ) |
References mUsedWeightSum.
Referenced by Sirikata::Forwarder::receiveWeightUpdateMessage(), and Sirikata::Forwarder::updateServerWeights().
uint32 Sirikata::ServerMessageQueue::trySend | ( | const ServerID & | addr, |
const Message * | msg | ||
) | [protected] |
void Sirikata::ServerMessageQueue::updatedSegmentation | ( | CoordinateSegmentation * | cseg, |
const std::vector< SegmentationInfo > & | new_segmentation | ||
) | [protected, virtual] |
Implements Sirikata::CoordinateSegmentation::Listener.
References NOT_IMPLEMENTED.
void Sirikata::ServerMessageQueue::updateReceiverStats | ( | ServerID | sid, |
double | total_weight, | ||
double | used_weight | ||
) |
References handleUpdateReceiverStats(), mSenderStrand, mUsedWeights, mUsedWeightSum, and Sirikata::Network::IOStrand::post().
Referenced by Sirikata::Forwarder::updateServerWeights().
bool Sirikata::ServerMessageQueue::mBlocked [protected] |
Referenced by capacity(), isBlocked(), and Sirikata::FairServerMessageQueue::service().
Referenced by capacity(), and Sirikata::FairServerMessageQueue::service().
double Sirikata::ServerMessageQueue::mCapacityOverestimate [protected] |
Referenced by ServerMessageQueue().
SpaceContext* Sirikata::ServerMessageQueue::mContext [protected] |
SpaceNetwork* Sirikata::ServerMessageQueue::mNetwork [protected] |
Referenced by connect(), and ServerMessageQueue().
Referenced by ServerMessageQueue(), Sirikata::FairServerMessageQueue::service(), and ~ServerMessageQueue().
Sender* Sirikata::ServerMessageQueue::mSender [protected] |
WeightMap Sirikata::ServerMessageQueue::mUsedWeights [protected] |
Referenced by updateReceiverStats().
double Sirikata::ServerMessageQueue::mUsedWeightSum [protected] |
Referenced by totalUsedWeight(), and updateReceiverStats().