Sirikata
|
Fairly distributes inter-space node bandwidth between services, e.g. More...
#include <ForwarderServiceQueue.hpp>
Fairly distributes inter-space node bandwidth between services, e.g.
object message routing, PINTO, Loc, etc. Messages are broken down by destination server, then by service. The entire ForwarderServiceQueue is a set of fair queues over services, grouped by destination server.
typedef std::tr1::function<MessageQueue*(ServerID,uint32)> Sirikata::ForwarderServiceQueue::MessageQueueCreator |
typedef std::tr1::unordered_map<ServiceID, MessageQueueCreator> Sirikata::ForwarderServiceQueue::MessageQueueCreatorMap [private] |
typedef FairQueue<Message, ServiceID, MessageQueue> Sirikata::ForwarderServiceQueue::OutgoingFairQueue [private] |
typedef std::tr1::unordered_map<ServerID, OutgoingFairQueue*> Sirikata::ForwarderServiceQueue::ServerQueueMap [private] |
typedef uint32 Sirikata::ForwarderServiceQueue::ServiceID |
Sirikata::ForwarderServiceQueue::ForwarderServiceQueue | ( | ServerID | this_server, |
uint32 | size, | ||
Listener * | listener | ||
) |
Sirikata::ForwarderServiceQueue::~ForwarderServiceQueue | ( | ) |
References mQueues.
void Sirikata::ForwarderServiceQueue::addService | ( | ServiceID | svc, |
MessageQueueCreator | creator = 0 |
||
) |
References mQueueCreators.
Referenced by Sirikata::Forwarder::addODPServerMessageService(), and Sirikata::ForwarderServerMessageRouter::ForwarderServerMessageRouter().
ForwarderServiceQueue::OutgoingFairQueue * Sirikata::ForwarderServiceQueue::checkServiceQueue | ( | OutgoingFairQueue * | ofq, |
ServiceID | svc_id | ||
) | [private] |
References Sirikata::FairQueue< Message, Key, TQueue >::hasQueue().
Referenced by notifyPushFront(), push(), and size().
bool Sirikata::ForwarderServiceQueue::empty | ( | ServerID | sid | ) |
References Sirikata::FairQueue< Message, Key, TQueue >::empty(), getServerFairQueue(), and mMutex.
Referenced by Sirikata::Forwarder::serverMessageEmpty().
Message * Sirikata::ForwarderServiceQueue::front | ( | ServerID | sid | ) |
References Sirikata::FairQueue< Message, Key, TQueue >::front(), getServerFairQueue(), and mMutex.
ForwarderServiceQueue::OutgoingFairQueue * Sirikata::ForwarderServiceQueue::getServerFairQueue | ( | ServerID | sid | ) | [private] |
References Sirikata::FairQueue< Message, Key, TQueue >::addQueue(), mQueueCreators, mQueues, and mQueueSize.
Referenced by empty(), front(), notifyPushFront(), pop(), prePush(), push(), and size().
void Sirikata::ForwarderServiceQueue::notifyPushFront | ( | ServerID | sid, |
ServiceID | svc | ||
) | [private] |
Message * Sirikata::ForwarderServiceQueue::pop | ( | ServerID | sid | ) |
References getServerFairQueue(), mMutex, and Sirikata::FairQueue< Message, Key, TQueue >::pop().
Referenced by Sirikata::Forwarder::serverMessagePull().
void Sirikata::ForwarderServiceQueue::prePush | ( | ServerID | sid | ) | [private] |
References getServerFairQueue(), and mMutex.
Referenced by Sirikata::Forwarder::routeObjectMessageToServer(), and Sirikata::Forwarder::serverConnectionReceived().
QueueEnum::PushResult Sirikata::ForwarderServiceQueue::push | ( | ServiceID | svc, |
Message * | msg | ||
) | [private] |
References checkServiceQueue(), Sirikata::Message::dest_server(), Sirikata::ForwarderServiceQueue::Listener::forwarderServiceMessageReady(), getServerFairQueue(), mListener, mMutex, mThisServer, Sirikata::FairQueue< Message, Key, TQueue >::push(), Sirikata::QueueEnum::PushSucceeded, and Sirikata::Message::source_server().
Referenced by Sirikata::ForwarderServerMessageRouter::route().
uint32 Sirikata::ForwarderServiceQueue::size | ( | ServerID | sid, |
ServiceID | svc | ||
) | [private] |
friend class Forwarder [friend] |
friend class ForwarderServerMessageRouter [friend] |
friend class ODPFlowScheduler [friend] |
Referenced by notifyPushFront(), and push().
boost::mutex Sirikata::ForwarderServiceQueue::mMutex [private] |
Referenced by addService(), and getServerFairQueue().
Referenced by getServerFairQueue(), and ~ForwarderServiceQueue().
uint32 Sirikata::ForwarderServiceQueue::mQueueSize [private] |
Referenced by getServerFairQueue().
ServerID Sirikata::ForwarderServiceQueue::mThisServer [private] |
Referenced by push().