Sirikata
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
Sirikata::ServerMessageReceiver Class Reference

ServerMessageReceiver handles receiving ServerMessages from the Network. More...

#include <ServerMessageReceiver.hpp>

Inheritance diagram for Sirikata::ServerMessageReceiver:
Collaboration diagram for Sirikata::ServerMessageReceiver:

List of all members.

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

SpaceContextmContext
Network::IOStrandmReceiverStrand
SpaceNetworkmNetwork
TimeProfiler::StagemProfiler
ListenermListener
WeightMap mUsedWeights
double mUsedWeightSum
bool mBlocked
SimpleRateEstimator mCapacityEstimator
double mCapacityOverestimate

Detailed Description

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.


Member Typedef Documentation

typedef std::tr1::unordered_map<ServerID, double> Sirikata::ServerMessageReceiver::WeightMap [protected]

Constructor & Destructor Documentation

Sirikata::ServerMessageReceiver::ServerMessageReceiver ( SpaceContext ctx,
SpaceNetwork net,
Listener listener 
)
Sirikata::ServerMessageReceiver::~ServerMessageReceiver ( ) [virtual]

References mProfiler, and mReceiverStrand.


Member Function Documentation

double Sirikata::ServerMessageReceiver::capacity ( )
virtual void Sirikata::ServerMessageReceiver::handleUpdateSenderStats ( ServerID  sid,
double  total_weight,
double  used_weight 
) [protected, pure virtual]
bool Sirikata::ServerMessageReceiver::isBlocked ( ) const [inline]
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 ( )
void Sirikata::ServerMessageReceiver::updatedSegmentation ( CoordinateSegmentation cseg,
const std::vector< SegmentationInfo > &  new_segmentation 
) [protected, virtual]
void Sirikata::ServerMessageReceiver::updateSenderStats ( ServerID  sid,
double  total_weight,
double  used_weight 
)

Member Data Documentation

Referenced by capacity(), and ServerMessageReceiver().

Referenced by updateSenderStats().


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