Sirikata
|
#include <LoadBalancer.hpp>
Public Member Functions | |
LoadBalancer (DistributedCoordinateSegmentation *, int nservers, const Vector3ui32 &perdim) | |
~LoadBalancer () | |
void | reportRegionLoad (SegmentedRegion *region, ServerID sid, uint32 loadValue) |
void | handleSegmentationChange (Sirikata::Protocol::CSeg::ChangeMessage segChangeMessage) |
void | service () |
uint32 | numAvailableServers () |
Private Member Functions | |
uint32 | getAvailableServerIndex () |
Private Attributes | |
std::vector< SegmentedRegion * > | mOverloadedRegionsList |
std::vector< SegmentedRegion * > | mUnderloadedRegionsList |
boost::mutex | mOverloadedRegionsListMutex |
boost::mutex | mUnderloadedRegionsListMutex |
std::vector< ServerAvailability > | mAvailableServers |
DistributedCoordinateSegmentation * | mCSeg |
Sirikata::LoadBalancer::LoadBalancer | ( | DistributedCoordinateSegmentation * | cseg, |
int | nservers, | ||
const Vector3ui32 & | perdim | ||
) |
Sirikata::LoadBalancer::~LoadBalancer | ( | ) |
uint32 Sirikata::LoadBalancer::getAvailableServerIndex | ( | ) | [private] |
References mAvailableServers.
Referenced by service().
void Sirikata::LoadBalancer::handleSegmentationChange | ( | Sirikata::Protocol::CSeg::ChangeMessage | segChangeMessage | ) |
References mAvailableServers.
Referenced by Sirikata::DistributedCoordinateSegmentation::asyncLLRead().
uint32 Sirikata::LoadBalancer::numAvailableServers | ( | ) |
References mAvailableServers.
Referenced by Sirikata::DistributedCoordinateSegmentation::numServers().
void Sirikata::LoadBalancer::reportRegionLoad | ( | SegmentedRegion * | region, |
ServerID | sid, | ||
uint32 | loadValue | ||
) |
References Sirikata::SegmentedRegion::mLoadValue, mOverloadedRegionsList, mOverloadedRegionsListMutex, mUnderloadedRegionsList, mUnderloadedRegionsListMutex, OVERLOAD_THRESHOLD, and UNDERLOAD_THRESHOLD.
Referenced by Sirikata::DistributedCoordinateSegmentation::asyncLLRead(), and Sirikata::DistributedCoordinateSegmentation::handleLoadReport().
void Sirikata::LoadBalancer::service | ( | ) |
References getAvailableServerIndex(), Sirikata::DistributedCoordinateSegmentation::getServerRegionUncached(), mAvailableServers, Sirikata::SegmentedRegion::mBoundingBox, mCSeg, Sirikata::SegmentedRegion::mLeftChild, Sirikata::DistributedCoordinateSegmentation::mLowerTreeServerRegionMap, mOverloadedRegionsList, mOverloadedRegionsListMutex, Sirikata::SegmentedRegion::mParent, Sirikata::SegmentedRegion::mRightChild, Sirikata::SegmentedRegion::mServer, Sirikata::SegmentedRegion::mSplitAxis, mUnderloadedRegionsList, mUnderloadedRegionsListMutex, Sirikata::DistributedCoordinateSegmentation::mWholeTreeServerRegionMap, Sirikata::DistributedCoordinateSegmentation::notifySpaceServersOfChange(), Sirikata::DistributedCoordinateSegmentation::serverRegionCached(), Sirikata::SegmentedRegion::UNDEFINED, X, Y, and Sirikata::SegmentedRegion::Y.
Referenced by Sirikata::DistributedCoordinateSegmentation::service().
std::vector<ServerAvailability> Sirikata::LoadBalancer::mAvailableServers [private] |
Referenced by getAvailableServerIndex(), handleSegmentationChange(), LoadBalancer(), numAvailableServers(), and service().
Referenced by LoadBalancer(), and service().
std::vector<SegmentedRegion*> Sirikata::LoadBalancer::mOverloadedRegionsList [private] |
Referenced by reportRegionLoad(), and service().
boost::mutex Sirikata::LoadBalancer::mOverloadedRegionsListMutex [private] |
Referenced by reportRegionLoad(), and service().
std::vector<SegmentedRegion*> Sirikata::LoadBalancer::mUnderloadedRegionsList [private] |
Referenced by reportRegionLoad(), and service().
boost::mutex Sirikata::LoadBalancer::mUnderloadedRegionsListMutex [private] |
Referenced by reportRegionLoad(), and service().