Sirikata
|
FairServerMessageReceiver implements the ServerMessageReceiver interface using a FairQueue (without internal storage, using the SpaceNetwork layer as the queue storage) to fairly distribute receive bandwidth based on the specified weights. More...
#include <FairServerMessageReceiver.hpp>
Public Member Functions | |
FairServerMessageReceiver (SpaceContext *ctx, SpaceNetwork *net, Listener *listener) | |
virtual | ~FairServerMessageReceiver () |
Private Types | |
typedef std::set< ServerID > | ReceiveServerSet |
Private Member Functions | |
virtual void | handleUpdateSenderStats (ServerID sid, double total_weight, double used_weight) |
virtual void | networkReceivedConnection (SpaceNetwork::ReceiveStream *strm) |
Invoked when a new connection is received from a remote host. | |
virtual void | networkReceivedData (SpaceNetwork::ReceiveStream *strm) |
Invoked by the Network when data has been received on a queue that was previously empty, i.e. | |
void | service () |
Private Attributes | |
Network::IOTimerPtr | mServiceTimer |
FairQueue< Message, ServerID, NetworkQueueWrapper > | mReceiveQueues |
ReceiveServerSet | mReceiveSet |
bool | mServicing |
uint32 | mStoppedUnderflow |
uint32 | mStoppedMaxMessages |
uint32 | mBytesUsed |
boost::mutex | mMutex |
FairServerMessageReceiver implements the ServerMessageReceiver interface using a FairQueue (without internal storage, using the SpaceNetwork layer as the queue storage) to fairly distribute receive bandwidth based on the specified weights.
typedef std::set<ServerID> Sirikata::FairServerMessageReceiver::ReceiveServerSet [private] |
Sirikata::FairServerMessageReceiver::FairServerMessageReceiver | ( | SpaceContext * | ctx, |
SpaceNetwork * | net, | ||
Listener * | listener | ||
) |
Sirikata::FairServerMessageReceiver::~FairServerMessageReceiver | ( | ) | [virtual] |
References Sirikata::Logging::info, mBytesUsed, mStoppedMaxMessages, mStoppedUnderflow, and SILOG.
void Sirikata::FairServerMessageReceiver::handleUpdateSenderStats | ( | ServerID | sid, |
double | total_weight, | ||
double | used_weight | ||
) | [private, virtual] |
void Sirikata::FairServerMessageReceiver::networkReceivedConnection | ( | SpaceNetwork::ReceiveStream * | strm | ) | [private, 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::ServerMessageReceiver.
References Sirikata::FairQueue< Message, Key, TQueue >::addQueue(), Sirikata::FairQueue< Message, Key, TQueue >::avg_weight(), Sirikata::Logging::fatal, Sirikata::FairQueue< Message, Key, TQueue >::hasQueue(), Sirikata::SpaceNetwork::ReceiveStream::id(), Sirikata::Logging::info, Sirikata::ServerMessageReceiver::mContext, Sirikata::ServerMessageReceiver::mListener, mMutex, mReceiveQueues, mReceiveSet, Sirikata::ServerMessageReceiver::Listener::serverConnectionReceived(), SILOG, and Sirikata::Trace::SPACE_TO_SPACE_READ_FROM_NET.
void Sirikata::FairServerMessageReceiver::networkReceivedData | ( | SpaceNetwork::ReceiveStream * | strm | ) | [private, 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::ServerMessageReceiver.
References Sirikata::SpaceNetwork::ReceiveStream::id(), Sirikata::Logging::insane, mMutex, mReceiveQueues, Sirikata::ServerMessageReceiver::mReceiverStrand, mServicing, Sirikata::FairQueue< Message, Key, TQueue >::notifyPushFront(), Sirikata::Network::IOStrand::post(), service(), and SILOG.
void Sirikata::FairServerMessageReceiver::service | ( | ) | [private] |
References CONTEXT_SPACETRACE, Sirikata::SimpleRateEstimator::estimate_rate(), Sirikata::TimeProfiler::Stage::finished(), Sirikata::Message::id(), Sirikata::ServerMessageReceiver::mBlocked, mBytesUsed, Sirikata::ServerMessageReceiver::mCapacityEstimator, Sirikata::ServerMessageReceiver::mContext, Sirikata::ServerMessageReceiver::mListener, mMutex, Sirikata::ServerMessageReceiver::mProfiler, mReceiveQueues, mServiceTimer, mServicing, mStoppedMaxMessages, mStoppedUnderflow, Sirikata::FairQueue< Message, Key, TQueue >::pop(), Sirikata::Message::serializedSize(), Sirikata::ServerMessageReceiver::Listener::serverMessageReceived(), Sirikata::Context::simTime(), Sirikata::Message::size(), Sirikata::Message::source_server(), and Sirikata::TimeProfiler::Stage::started().
Referenced by networkReceivedData().
uint32 Sirikata::FairServerMessageReceiver::mBytesUsed [private] |
Referenced by service(), and ~FairServerMessageReceiver().
boost::mutex Sirikata::FairServerMessageReceiver::mMutex [private] |
Referenced by handleUpdateSenderStats(), networkReceivedConnection(), networkReceivedData(), and service().
FairQueue<Message, ServerID, NetworkQueueWrapper > Sirikata::FairServerMessageReceiver::mReceiveQueues [private] |
Referenced by handleUpdateSenderStats(), networkReceivedConnection(), networkReceivedData(), and service().
Referenced by networkReceivedConnection().
Referenced by service().
bool Sirikata::FairServerMessageReceiver::mServicing [private] |
Referenced by networkReceivedData(), and service().
uint32 Sirikata::FairServerMessageReceiver::mStoppedMaxMessages [private] |
Referenced by service(), and ~FairServerMessageReceiver().
uint32 Sirikata::FairServerMessageReceiver::mStoppedUnderflow [private] |
Referenced by service(), and ~FairServerMessageReceiver().