Sirikata
|
ServerMessageReceiver handles receiving ServerMessages from the Network. More...
#include <ServerMessageReceiver.hpp>
Classes | |
class | Listener |
Public Member Functions | |
ServerMessageReceiver (SpaceContext *ctx, SpaceNetwork *net, Listener *listener) | |
virtual | ~ServerMessageReceiver () |
void | updateSenderStats (ServerID sid, double total_weight, double used_weight) |
double | totalUsedWeight () |
double | capacity () |
bool | isBlocked () const |
Protected Types | |
typedef std::tr1::unordered_map < ServerID, double > | WeightMap |
Protected Member Functions | |
virtual void | networkReceivedConnection (SpaceNetwork::ReceiveStream *strm)=0 |
Invoked when a new connection is received from a remote host. | |
virtual void | networkReceivedData (SpaceNetwork::ReceiveStream *strm)=0 |
Invoked by the Network when data has been received on a queue that was previously empty, i.e. | |
virtual void | updatedSegmentation (CoordinateSegmentation *cseg, const std::vector< SegmentationInfo > &new_segmentation) |
virtual void | handleUpdateSenderStats (ServerID sid, double total_weight, double used_weight)=0 |
Protected Attributes | |
SpaceContext * | mContext |
Network::IOStrand * | mReceiverStrand |
SpaceNetwork * | mNetwork |
TimeProfiler::Stage * | mProfiler |
Listener * | mListener |
WeightMap | mUsedWeights |
double | mUsedWeightSum |
bool | mBlocked |
SimpleRateEstimator | mCapacityEstimator |
double | mCapacityOverestimate |
ServerMessageReceiver handles receiving ServerMessages from the Network.
It pulls messages from the network as its rate limiting permits and handles distributing available bandwidth fairly between connections. As messages are received from the network it pushes them up to a listener which can handle them -- no queueing is performed internally.
typedef std::tr1::unordered_map<ServerID, double> Sirikata::ServerMessageReceiver::WeightMap [protected] |
Sirikata::ServerMessageReceiver::ServerMessageReceiver | ( | SpaceContext * | ctx, |
SpaceNetwork * | net, | ||
Listener * | listener | ||
) |
Sirikata::ServerMessageReceiver::~ServerMessageReceiver | ( | ) | [virtual] |
References mProfiler, and mReceiverStrand.
double Sirikata::ServerMessageReceiver::capacity | ( | ) |
References Sirikata::RateEstimator::get(), mBlocked, mCapacityEstimator, and mCapacityOverestimate.
Referenced by Sirikata::Forwarder::updateServerWeights().
virtual void Sirikata::ServerMessageReceiver::handleUpdateSenderStats | ( | ServerID | sid, |
double | total_weight, | ||
double | used_weight | ||
) | [protected, pure virtual] |
Implemented in Sirikata::FairServerMessageReceiver.
Referenced by updateSenderStats().
bool Sirikata::ServerMessageReceiver::isBlocked | ( | ) | const [inline] |
References mBlocked.
Referenced by Sirikata::Forwarder::updateServerWeights().
virtual void Sirikata::ServerMessageReceiver::networkReceivedConnection | ( | SpaceNetwork::ReceiveStream * | strm | ) | [protected, pure virtual] |
Invoked when a new connection is received from a remote host.
This should be used as an indication that a receive queue should be allocated and serviced for that connection.
Implements Sirikata::SpaceNetwork::ReceiveListener.
Implemented in Sirikata::FairServerMessageReceiver.
virtual void Sirikata::ServerMessageReceiver::networkReceivedData | ( | SpaceNetwork::ReceiveStream * | strm | ) | [protected, pure virtual] |
Invoked by the Network when data has been received on a queue that was previously empty, i.e.
when data is received taht causes front(from) to change.
Implements Sirikata::SpaceNetwork::ReceiveListener.
Implemented in Sirikata::FairServerMessageReceiver.
double Sirikata::ServerMessageReceiver::totalUsedWeight | ( | ) |
References mUsedWeightSum.
Referenced by Sirikata::Forwarder::updateServerWeights().
void Sirikata::ServerMessageReceiver::updatedSegmentation | ( | CoordinateSegmentation * | cseg, |
const std::vector< SegmentationInfo > & | new_segmentation | ||
) | [protected, virtual] |
Implements Sirikata::CoordinateSegmentation::Listener.
References NOT_IMPLEMENTED.
void Sirikata::ServerMessageReceiver::updateSenderStats | ( | ServerID | sid, |
double | total_weight, | ||
double | used_weight | ||
) |
References handleUpdateSenderStats(), mReceiverStrand, mUsedWeights, mUsedWeightSum, and Sirikata::Network::IOStrand::post().
Referenced by Sirikata::Forwarder::receiveWeightUpdateMessage().
bool Sirikata::ServerMessageReceiver::mBlocked [protected] |
Referenced by capacity(), isBlocked(), and Sirikata::FairServerMessageReceiver::service().
Referenced by capacity(), and Sirikata::FairServerMessageReceiver::service().
double Sirikata::ServerMessageReceiver::mCapacityOverestimate [protected] |
Referenced by capacity(), and ServerMessageReceiver().
SpaceContext* Sirikata::ServerMessageReceiver::mContext [protected] |
Listener* Sirikata::ServerMessageReceiver::mListener [protected] |
SpaceNetwork* Sirikata::ServerMessageReceiver::mNetwork [protected] |
Referenced by updateSenderStats().
double Sirikata::ServerMessageReceiver::mUsedWeightSum [protected] |
Referenced by totalUsedWeight(), and updateSenderStats().