Sirikata
|
Handles the segmentation of the space into regions handled by servers. More...
#include <CoordinateSegmentation.hpp>
Classes | |
class | Listener |
Listens for updates about the coordinate segmentation. More... | |
Public Member Functions | |
CoordinateSegmentation (SpaceContext *ctx) | |
virtual | ~CoordinateSegmentation () |
virtual ServerID | lookup (const Vector3f &pos)=0 |
virtual BoundingBoxList | serverRegion (const ServerID &server)=0 |
virtual BoundingBox3f | region ()=0 |
virtual uint32 | numServers ()=0 |
virtual std::vector< ServerID > | lookupBoundingBox (const BoundingBox3f &bbox)=0 |
void | addListener (Listener *listener) |
void | removeListener (Listener *listener) |
virtual void | receiveMessage (Message *msg)=0 |
virtual void | reportLoad (ServerID sid, const BoundingBox3f &bbox, uint32 load) |
virtual void | migrationHint (std::vector< ServerLoadInfo > &svrLoadInfo) |
virtual void | service ()=0 |
Protected Member Functions | |
virtual void | poll () |
Override this method to specify the work to be done when polling. | |
void | notifyListeners (const std::vector< SegmentationInfo > &new_segmentation) |
Protected Attributes | |
SpaceContext * | mContext |
Private Member Functions | |
CoordinateSegmentation () | |
Private Attributes | |
TimeProfiler::Stage * | mServiceStage |
std::set< Listener * > | mListeners |
Handles the segmentation of the space into regions handled by servers.
Answers queries of the type position -> ServerID ServerID -> region
Sirikata::CoordinateSegmentation::CoordinateSegmentation | ( | SpaceContext * | ctx | ) |
Sirikata::CoordinateSegmentation::~CoordinateSegmentation | ( | ) | [virtual] |
References mServiceStage.
Sirikata::CoordinateSegmentation::CoordinateSegmentation | ( | ) | [private] |
void Sirikata::CoordinateSegmentation::addListener | ( | Listener * | listener | ) |
References mListeners.
Referenced by Sirikata::MigrationMonitor::MigrationMonitor(), and Sirikata::Proximity::Proximity().
virtual ServerID Sirikata::CoordinateSegmentation::lookup | ( | const Vector3f & | pos | ) | [pure virtual] |
Implemented in Sirikata::CoordinateSegmentationClient, and Sirikata::UniformCoordinateSegmentation.
Referenced by Sirikata::Server::handleConnect(), and Sirikata::Server::handleMigrationEvent().
virtual std::vector<ServerID> Sirikata::CoordinateSegmentation::lookupBoundingBox | ( | const BoundingBox3f & | bbox | ) | [pure virtual] |
Implemented in Sirikata::CoordinateSegmentationClient, and Sirikata::UniformCoordinateSegmentation.
virtual void Sirikata::CoordinateSegmentation::migrationHint | ( | std::vector< ServerLoadInfo > & | svrLoadInfo | ) | [inline, virtual] |
Reimplemented in Sirikata::CoordinateSegmentationClient.
Referenced by Sirikata::LoadMonitor::addLoadReading().
void Sirikata::CoordinateSegmentation::notifyListeners | ( | const std::vector< SegmentationInfo > & | new_segmentation | ) | [protected] |
References mListeners.
Referenced by Sirikata::CoordinateSegmentationClient::accept_handler(), and Sirikata::UniformCoordinateSegmentation::service().
virtual uint32 Sirikata::CoordinateSegmentation::numServers | ( | ) | [pure virtual] |
Implemented in Sirikata::CoordinateSegmentationClient, and Sirikata::UniformCoordinateSegmentation.
Referenced by Sirikata::LoadMonitor::sendLoadReadings().
void Sirikata::CoordinateSegmentation::poll | ( | ) | [protected, virtual] |
Override this method to specify the work to be done when polling.
Implements Sirikata::PollingService.
References Sirikata::TimeProfiler::Stage::finished(), mServiceStage, service(), and Sirikata::TimeProfiler::Stage::started().
virtual void Sirikata::CoordinateSegmentation::receiveMessage | ( | Message * | msg | ) | [pure virtual] |
Implements Sirikata::MessageRecipient.
Implemented in Sirikata::CoordinateSegmentationClient, and Sirikata::UniformCoordinateSegmentation.
virtual BoundingBox3f Sirikata::CoordinateSegmentation::region | ( | ) | [pure virtual] |
Implemented in Sirikata::CoordinateSegmentationClient, and Sirikata::UniformCoordinateSegmentation.
Referenced by Sirikata::MigrationMonitor::service().
void Sirikata::CoordinateSegmentation::removeListener | ( | Listener * | listener | ) |
References mListeners.
Referenced by Sirikata::MigrationMonitor::~MigrationMonitor().
virtual void Sirikata::CoordinateSegmentation::reportLoad | ( | ServerID | sid, |
const BoundingBox3f & | bbox, | ||
uint32 | load | ||
) | [inline, virtual] |
Reimplemented in Sirikata::CoordinateSegmentationClient.
Referenced by Sirikata::Server::finishAddObject().
virtual BoundingBoxList Sirikata::CoordinateSegmentation::serverRegion | ( | const ServerID & | server | ) | [pure virtual] |
Implemented in Sirikata::CoordinateSegmentationClient, and Sirikata::UniformCoordinateSegmentation.
Referenced by Sirikata::CommunicationCache::CommunicationCache(), Sirikata::Server::finishAddObject(), Sirikata::CSFQODPFlowScheduler::getObjectWeightRegion(), Sirikata::LoadMonitor::handlesAdjacentRegion(), Sirikata::CommunicationCache::insert(), Sirikata::MigrationMonitor::MigrationMonitor(), Sirikata::LibproxProximity::recomputeAggregateQueryBounds(), Sirikata::LibproxProximityBase::start(), Sirikata::RegionODPFlowScheduler::totalActiveWeight(), Sirikata::RegionODPFlowScheduler::totalReceiverUsedWeight(), Sirikata::RegionODPFlowScheduler::totalSenderUsedWeight(), and Sirikata::LibproxProximityBase::updatedSegmentation().
virtual void Sirikata::CoordinateSegmentation::service | ( | ) | [pure virtual] |
Implemented in Sirikata::CoordinateSegmentationClient, and Sirikata::UniformCoordinateSegmentation.
Referenced by poll().
SpaceContext* Sirikata::CoordinateSegmentation::mContext [protected] |
Referenced by CoordinateSegmentation(), Sirikata::CoordinateSegmentationClient::CoordinateSegmentationClient(), Sirikata::CoordinateSegmentationClient::handleSelfLookup(), Sirikata::UniformCoordinateSegmentation::service(), Sirikata::UniformCoordinateSegmentation::UniformCoordinateSegmentation(), and Sirikata::UniformCoordinateSegmentation::~UniformCoordinateSegmentation().
std::set<Listener*> Sirikata::CoordinateSegmentation::mListeners [private] |
Referenced by addListener(), notifyListeners(), and removeListener().
Referenced by CoordinateSegmentation(), poll(), and ~CoordinateSegmentation().