Sirikata
|
Distributed kd-tree based implementation of CoordinateSegmentation. More...
#include <DistributedCoordinateSegmentation.hpp>
Public Member Functions | |
DistributedCoordinateSegmentation (CSegContext *ctx, const BoundingBox3f ®ion, const Vector3ui32 &perdim, int, ServerIDMap *) | |
virtual | ~DistributedCoordinateSegmentation () |
virtual BoundingBoxList | serverRegionCached (const ServerID &server) |
void | getServerRegionUncached (const ServerID &server, boost::shared_ptr< tcp::socket > socket) |
virtual BoundingBox3f | region () |
virtual uint32 | numServers () |
virtual void | poll () |
Override this method to specify the work to be done when polling. | |
virtual void | stop () |
Stop scheduling this service. | |
void | handleSelfLookup (ServerID my_sid, Address4 my_addr) |
Private Member Functions | |
void | service () |
void | csegChangeMessage (Sirikata::Protocol::CSeg::ChangeMessage *ccMsg) |
void | handleLoadReport (boost::shared_ptr< tcp::socket >, Sirikata::Protocol::CSeg::LoadReportMessage *message) |
void | notifySpaceServersOfChange (const std::vector< SegmentationInfo > segInfoVector) |
void | startAccepting () |
void | startAcceptingLLRequests () |
void | accept_handler () |
void | acceptLLTreeRequestHandler () |
void | generateHierarchicalTrees (SegmentedRegion *region, int depth, int &numLLTreesSoFar) |
void | subdivideTopLevelRegion (SegmentedRegion *region, Vector3ui32 perdim, int &numServersAssigned) |
void | callLowerLevelCSEGServer (boost::shared_ptr< tcp::socket > socket, ServerID, const Vector3f &searchVec, const BoundingBox3f &boundingBox, BoundingBox3f &returningBBox) |
void | callLowerLevelCSEGServersForServerRegions (boost::shared_ptr< tcp::socket > socket, ServerID server_id, BoundingBoxList &) |
void | sendLoadReportToLowerLevelCSEGServer (boost::shared_ptr< tcp::socket > socket, ServerID, const BoundingBox3f &boundingBox, Sirikata::Protocol::CSeg::LoadReportMessage *message) |
void | callLowerLevelCSEGServersForLookupBoundingBoxes (boost::shared_ptr< tcp::socket > socket, const BoundingBox3f &bbox, const std::map< ServerID, std::vector< SegmentedRegion * > > &, std::vector< ServerID > &) |
void | ioServicingLoop () |
void | llIOServicingLoop () |
void | sendToAllCSEGServers (Sirikata::Protocol::CSeg::CSegMessage &) |
void | sendOnAllSockets (Sirikata::Protocol::CSeg::CSegMessage csegMessage, std::map< ServerID, SocketContainer > socketList) |
void | sendToAllSpaceServers (Sirikata::Protocol::CSeg::CSegMessage &) |
uint32 | getAvailableServerIndex () |
void | getRandomLeafParentSibling (SegmentedRegion **randomLeaf, SegmentedRegion **sibling, SegmentedRegion **parent) |
void | asyncRead (boost::shared_ptr< tcp::socket > socket, uint8 *asyncBufferArray, const boost::system::error_code &ec, std::size_t bytes_transferred) |
void | asyncLLRead (boost::shared_ptr< tcp::socket > socket, uint8 *asyncBufferArray, const boost::system::error_code &ec, std::size_t bytes_transferred) |
void | writeCSEGMessage (boost::shared_ptr< tcp::socket > socket, Sirikata::Protocol::CSeg::CSegMessage &csegMessage) |
void | readCSEGMessage (boost::shared_ptr< tcp::socket > socket, Sirikata::Protocol::CSeg::CSegMessage &csegMessage, uint8 *bufferSoFar, uint32 bufferSoFarSize) |
void | readCSEGMessage (boost::shared_ptr< tcp::socket > socket, Sirikata::Protocol::CSeg::CSegMessage &csegMessage) |
void | serializeBSPTree (SerializedBSPTree *serializedBSPTree) |
void | traverseAndStoreTree (SegmentedRegion *region, uint32 &idx, SerializedBSPTree *serializedTree) |
SocketContainer | getSocketToCSEGServer (ServerID server_id) |
void | doSocketCreation (ServerID server_id, std::vector< ServerID > server_id_List, std::map< ServerID, SocketContainer > *socketMapPtr, ResponseCompletionFunction func, ServerID resolved_id, Address4 addy) |
void | createSocketContainers (std::vector< ServerID > server_id_List, std::map< ServerID, SocketContainer > *socketMap, ResponseCompletionFunction func) |
bool | handleLookup (Vector3f vector, boost::shared_ptr< tcp::socket > socket) |
void | lookupOnSocket (boost::shared_ptr< tcp::socket > clientSocket, const Vector3f searchVec, const BoundingBox3f boundingBox, std::map< ServerID, SocketContainer > socketList) |
void | writeLookupResponse (boost::shared_ptr< tcp::socket > socket, BoundingBox3f &bbox, ServerID sid) |
void | requestServerRegionsOnSockets (boost::shared_ptr< tcp::socket > socket, ServerID server_id, BoundingBoxList bbList, std::map< ServerID, SocketContainer > socketList) |
void | writeServerRegionResponse (boost::shared_ptr< tcp::socket > socket, BoundingBoxList boundingBoxlist) |
bool | handleLookupBBox (const BoundingBox3f &bbox, boost::shared_ptr< tcp::socket > socket) |
Look up server IDs that cover the bounding region specified by bbox. | |
void | lookupBBoxOnSocket (boost::shared_ptr< tcp::socket > clientSocket, const BoundingBox3f boundingBox, std::vector< ServerID > server_ids, std::map< ServerID, std::vector< SegmentedRegion * > > otherCSEGServers, std::map< ServerID, SocketContainer > socketList) |
void | writeLookupBBoxResponse (boost::shared_ptr< tcp::socket > clientSocket, std::vector< ServerID >) |
void | sendLoadReportOnSocket (boost::shared_ptr< tcp::socket > clientSocket, BoundingBox3f boundingBox, Sirikata::Protocol::CSeg::LoadReportMessage message, std::map< ServerID, SocketContainer > socketList) |
Private Attributes | |
CSegContext * | mContext |
SegmentedRegion | mTopLevelRegion |
Time | mLastUpdateTime |
LoadBalancer | mLoadBalancer |
std::vector < SegmentationChangeListener > | mSpacePeers |
boost::asio::io_service | mIOService |
boost::asio::io_service | mLLIOService |
boost::shared_ptr< tcp::acceptor > | mAcceptor |
boost::shared_ptr< tcp::socket > | mSocket |
boost::shared_ptr< tcp::acceptor > | mLLTreeAcceptor |
boost::shared_ptr< tcp::socket > | mLLTreeAcceptorSocket |
std::map< String, SegmentedRegion * > | mHigherLevelTrees |
std::map< String, SegmentedRegion * > | mLowerLevelTrees |
int | mAvailableCSEGServers |
int | mUpperTreeCSEGServers |
ServerIDMap * | mSidMap |
std::map< ServerID, BoundingBoxList > | mWholeTreeServerRegionMap |
std::map< ServerID, BoundingBoxList > | mLowerTreeServerRegionMap |
boost::shared_mutex | mCSEGReadWriteMutex |
boost::shared_mutex | mSocketsToCSEGServersMutex |
std::map< ServerID, SocketQueuePtr > | mLeasedSocketsToCSEGServers |
Friends | |
class | LoadBalancer |
Distributed kd-tree based implementation of CoordinateSegmentation.
Sirikata::DistributedCoordinateSegmentation::DistributedCoordinateSegmentation | ( | CSegContext * | ctx, |
const BoundingBox3f & | region, | ||
const Vector3ui32 & | perdim, | ||
int | nservers, | ||
ServerIDMap * | sidmap | ||
) |
References Sirikata::WorldPopulationBSPTree::constructBSPTree(), CSEG_LOG, generateHierarchicalTrees(), Sirikata::GetOptionValue< bool >(), Sirikata::GetOptionValue< String >(), handleSelfLookup(), Sirikata::CSegContext::id(), Sirikata::Logging::info, Sirikata::ServerIDMap::lookupInternal(), mAcceptor, Sirikata::Context::mainStrand, mAvailableCSEGServers, Sirikata::SegmentedRegion::mBoundingBox, mIOService, mTopLevelRegion, mUpperTreeCSEGServers, region(), startAccepting(), subdivideTopLevelRegion(), and Sirikata::Network::IOStrand::wrap().
Sirikata::DistributedCoordinateSegmentation::~DistributedCoordinateSegmentation | ( | ) | [virtual] |
References Sirikata::SegmentedRegion::destroy(), and mTopLevelRegion.
void Sirikata::DistributedCoordinateSegmentation::accept_handler | ( | ) | [private] |
References asyncRead(), mSocket, and startAccepting().
Referenced by startAccepting().
void Sirikata::DistributedCoordinateSegmentation::acceptLLTreeRequestHandler | ( | ) | [private] |
References asyncLLRead(), mLLTreeAcceptorSocket, and startAcceptingLLRequests().
Referenced by startAcceptingLLRequests().
void Sirikata::DistributedCoordinateSegmentation::asyncLLRead | ( | boost::shared_ptr< tcp::socket > | socket, |
uint8 * | asyncBufferArray, | ||
const boost::system::error_code & | ec, | ||
std::size_t | bytes_transferred | ||
) | [private] |
References CSEG_LOG, Sirikata::LoadBalancer::handleSegmentationChange(), Sirikata::Logging::info, Sirikata::SegmentedRegion::lookup(), Sirikata::SegmentedRegion::mBoundingBox, mCSEGReadWriteMutex, mLoadBalancer, Sirikata::SegmentedRegion::mLoadValue, mLowerLevelTrees, mLowerTreeServerRegionMap, Sirikata::SegmentedRegion::mServer, mWholeTreeServerRegionMap, Sirikata::Timer::now(), readCSEGMessage(), Sirikata::LoadBalancer::reportRegionLoad(), sendToAllSpaceServers(), Sirikata::SerializedBBox::serialize(), Sirikata::PollingService::start(), and writeCSEGMessage().
Referenced by acceptLLTreeRequestHandler().
void Sirikata::DistributedCoordinateSegmentation::asyncRead | ( | boost::shared_ptr< tcp::socket > | socket, |
uint8 * | asyncBufferArray, | ||
const boost::system::error_code & | ec, | ||
std::size_t | bytes_transferred | ||
) | [private] |
References CSEG_LOG, getServerRegionUncached(), handleLoadReport(), handleLookup(), handleLookupBBox(), Sirikata::SegmentationChangeListener::host, Sirikata::Logging::info, mCSEGReadWriteMutex, message, mSpacePeers, numServers(), Sirikata::SegmentationChangeListener::port, readCSEGMessage(), region(), and writeCSEGMessage().
Referenced by accept_handler(), lookupBBoxOnSocket(), lookupOnSocket(), sendLoadReportOnSocket(), and writeServerRegionResponse().
void Sirikata::DistributedCoordinateSegmentation::callLowerLevelCSEGServer | ( | boost::shared_ptr< tcp::socket > | socket, |
ServerID | server_id, | ||
const Vector3f & | searchVec, | ||
const BoundingBox3f & | boundingBox, | ||
BoundingBox3f & | returningBBox | ||
) | [private] |
References createSocketContainers(), getSocketToCSEGServer(), Sirikata::CSegContext::id(), lookupOnSocket(), mContext, and Sirikata::SocketContainer::socket().
Referenced by handleLookup().
void Sirikata::DistributedCoordinateSegmentation::callLowerLevelCSEGServersForLookupBoundingBoxes | ( | boost::shared_ptr< tcp::socket > | socket, |
const BoundingBox3f & | bbox, | ||
const std::map< ServerID, std::vector< SegmentedRegion * > > & | csegServers, | ||
std::vector< ServerID > & | spaceServers | ||
) | [private] |
References createSocketContainers(), getSocketToCSEGServer(), lookupBBoxOnSocket(), and Sirikata::SocketContainer::socket().
Referenced by handleLookupBBox().
void Sirikata::DistributedCoordinateSegmentation::callLowerLevelCSEGServersForServerRegions | ( | boost::shared_ptr< tcp::socket > | socket, |
ServerID | server_id, | ||
BoundingBoxList & | bbList | ||
) | [private] |
void Sirikata::DistributedCoordinateSegmentation::createSocketContainers | ( | std::vector< ServerID > | server_id_List, |
std::map< ServerID, SocketContainer > * | socketMap, | ||
ResponseCompletionFunction | func | ||
) | [private] |
References doSocketCreation(), Sirikata::ServerIDMap::lookupInternal(), Sirikata::Context::mainStrand, mContext, mSidMap, and Sirikata::Network::IOStrand::wrap().
Referenced by callLowerLevelCSEGServer(), callLowerLevelCSEGServersForLookupBoundingBoxes(), callLowerLevelCSEGServersForServerRegions(), sendLoadReportToLowerLevelCSEGServer(), and sendToAllCSEGServers().
void Sirikata::DistributedCoordinateSegmentation::csegChangeMessage | ( | Sirikata::Protocol::CSeg::ChangeMessage * | ccMsg | ) | [private] |
void Sirikata::DistributedCoordinateSegmentation::doSocketCreation | ( | ServerID | server_id, |
std::vector< ServerID > | server_id_List, | ||
std::map< ServerID, SocketContainer > * | socketMapPtr, | ||
ResponseCompletionFunction | func, | ||
ServerID | resolved_id, | ||
Address4 | addy | ||
) | [private] |
References CSEG_LOG, Sirikata::Logging::error, Sirikata::Logging::info, Sirikata::Address4::ip, mIOService, mLeasedSocketsToCSEGServers, and Sirikata::Address4::port.
Referenced by createSocketContainers().
void Sirikata::DistributedCoordinateSegmentation::generateHierarchicalTrees | ( | SegmentedRegion * | region, |
int | depth, | ||
int & | numLLTreesSoFar | ||
) | [private] |
References CSEG_LOG, Sirikata::CSegContext::id(), Sirikata::Logging::info, mAvailableCSEGServers, Sirikata::SegmentedRegion::mBoundingBox, mContext, mHigherLevelTrees, Sirikata::SegmentedRegion::mLeftChild, mLowerLevelTrees, Sirikata::SegmentedRegion::mParent, Sirikata::SegmentedRegion::mRightChild, Sirikata::SegmentedRegion::mServer, Sirikata::SegmentedRegion::mSplitAxis, mUpperTreeCSEGServers, and Sirikata::SegmentedRegion::UNDEFINED.
Referenced by DistributedCoordinateSegmentation().
uint32 Sirikata::DistributedCoordinateSegmentation::getAvailableServerIndex | ( | ) | [private] |
void Sirikata::DistributedCoordinateSegmentation::getRandomLeafParentSibling | ( | SegmentedRegion ** | randomLeaf, |
SegmentedRegion ** | sibling, | ||
SegmentedRegion ** | parent | ||
) | [private] |
void Sirikata::DistributedCoordinateSegmentation::getServerRegionUncached | ( | const ServerID & | server, |
boost::shared_ptr< tcp::socket > | socket | ||
) |
References callLowerLevelCSEGServersForServerRegions(), mHigherLevelTrees, mLowerLevelTrees, mWholeTreeServerRegionMap, and writeServerRegionResponse().
Referenced by asyncRead(), and Sirikata::LoadBalancer::service().
SocketContainer Sirikata::DistributedCoordinateSegmentation::getSocketToCSEGServer | ( | ServerID | server_id | ) | [private] |
void Sirikata::DistributedCoordinateSegmentation::handleLoadReport | ( | boost::shared_ptr< tcp::socket > | socket, |
Sirikata::Protocol::CSeg::LoadReportMessage * | message | ||
) | [private] |
References Sirikata::CSegContext::id(), Sirikata::SegmentedRegion::lookup(), Sirikata::SegmentedRegion::mBoundingBox, mContext, mHigherLevelTrees, mLoadBalancer, Sirikata::SegmentedRegion::mLoadValue, mLowerLevelTrees, Sirikata::SegmentedRegion::mServer, mTopLevelRegion, Sirikata::LoadBalancer::reportRegionLoad(), and sendLoadReportToLowerLevelCSEGServer().
Referenced by asyncRead().
bool Sirikata::DistributedCoordinateSegmentation::handleLookup | ( | Vector3f | vector, |
boost::shared_ptr< tcp::socket > | socket | ||
) | [private] |
References callLowerLevelCSEGServer(), CSEG_LOG, Sirikata::CSegContext::id(), Sirikata::Logging::insane, Sirikata::SegmentedRegion::lookup(), Sirikata::SegmentedRegion::mBoundingBox, mContext, mHigherLevelTrees, mLowerLevelTrees, Sirikata::SegmentedRegion::mServer, mTopLevelRegion, region(), and writeLookupResponse().
Referenced by asyncRead().
bool Sirikata::DistributedCoordinateSegmentation::handleLookupBBox | ( | const BoundingBox3f & | bbox, |
boost::shared_ptr< tcp::socket > | clientSocket | ||
) | [private] |
Look up server IDs that cover the bounding region specified by bbox.
The resulting list will eventually be written to the socket specified.
References callLowerLevelCSEGServersForLookupBoundingBoxes(), Sirikata::CSegContext::id(), Sirikata::SegmentedRegion::lookupBoundingBox(), Sirikata::SegmentedRegion::mBoundingBox, mContext, mHigherLevelTrees, mLowerLevelTrees, Sirikata::SegmentedRegion::mServer, mTopLevelRegion, and writeLookupBBoxResponse().
Referenced by asyncRead().
void Sirikata::DistributedCoordinateSegmentation::handleSelfLookup | ( | ServerID | my_sid, |
Address4 | my_addr | ||
) |
void Sirikata::DistributedCoordinateSegmentation::ioServicingLoop | ( | ) | [private] |
References mIOService.
Referenced by handleSelfLookup().
void Sirikata::DistributedCoordinateSegmentation::llIOServicingLoop | ( | ) | [private] |
References mLLIOService.
Referenced by handleSelfLookup().
void Sirikata::DistributedCoordinateSegmentation::lookupBBoxOnSocket | ( | boost::shared_ptr< tcp::socket > | clientSocket, |
const BoundingBox3f | boundingBox, | ||
std::vector< ServerID > | server_ids, | ||
std::map< ServerID, std::vector< SegmentedRegion * > > | otherCSEGServers, | ||
std::map< ServerID, SocketContainer > | socketList | ||
) | [private] |
void Sirikata::DistributedCoordinateSegmentation::lookupOnSocket | ( | boost::shared_ptr< tcp::socket > | clientSocket, |
const Vector3f | searchVec, | ||
const BoundingBox3f | boundingBox, | ||
std::map< ServerID, SocketContainer > | socketList | ||
) | [private] |
void Sirikata::DistributedCoordinateSegmentation::notifySpaceServersOfChange | ( | const std::vector< SegmentationInfo > | segInfoVector | ) | [private] |
References CSEG_LOG, Sirikata::Logging::info, region(), sendToAllCSEGServers(), and sendToAllSpaceServers().
Referenced by Sirikata::LoadBalancer::service().
uint32 Sirikata::DistributedCoordinateSegmentation::numServers | ( | ) | [virtual] |
References mLoadBalancer, and Sirikata::LoadBalancer::numAvailableServers().
Referenced by asyncRead().
void Sirikata::DistributedCoordinateSegmentation::poll | ( | ) | [virtual] |
Override this method to specify the work to be done when polling.
Implements Sirikata::PollingService.
References service().
void Sirikata::DistributedCoordinateSegmentation::readCSEGMessage | ( | boost::shared_ptr< tcp::socket > | socket, |
Sirikata::Protocol::CSeg::CSegMessage & | csegMessage | ||
) | [private] |
References readCSEGMessage().
void Sirikata::DistributedCoordinateSegmentation::readCSEGMessage | ( | boost::shared_ptr< tcp::socket > | socket, |
Sirikata::Protocol::CSeg::CSegMessage & | csegMessage, | ||
uint8 * | bufferSoFar, | ||
uint32 | bufferSoFarSize | ||
) | [private] |
References Sirikata::parsePBJMessage().
Referenced by asyncLLRead(), asyncRead(), lookupBBoxOnSocket(), lookupOnSocket(), readCSEGMessage(), requestServerRegionsOnSockets(), and sendLoadReportOnSocket().
BoundingBox3f Sirikata::DistributedCoordinateSegmentation::region | ( | ) | [virtual] |
References Sirikata::SegmentedRegion::mBoundingBox, and mTopLevelRegion.
Referenced by asyncRead(), DistributedCoordinateSegmentation(), handleLookup(), and notifySpaceServersOfChange().
void Sirikata::DistributedCoordinateSegmentation::requestServerRegionsOnSockets | ( | boost::shared_ptr< tcp::socket > | socket, |
ServerID | server_id, | ||
BoundingBoxList | bbList, | ||
std::map< ServerID, SocketContainer > | socketList | ||
) | [private] |
void Sirikata::DistributedCoordinateSegmentation::sendLoadReportOnSocket | ( | boost::shared_ptr< tcp::socket > | clientSocket, |
BoundingBox3f | boundingBox, | ||
Sirikata::Protocol::CSeg::LoadReportMessage | message, | ||
std::map< ServerID, SocketContainer > | socketList | ||
) | [private] |
void Sirikata::DistributedCoordinateSegmentation::sendLoadReportToLowerLevelCSEGServer | ( | boost::shared_ptr< tcp::socket > | socket, |
ServerID | cseg_server_id, | ||
const BoundingBox3f & | boundingBox, | ||
Sirikata::Protocol::CSeg::LoadReportMessage * | message | ||
) | [private] |
References createSocketContainers(), getSocketToCSEGServer(), Sirikata::CSegContext::id(), mContext, sendLoadReportOnSocket(), and Sirikata::SocketContainer::socket().
Referenced by handleLoadReport().
void Sirikata::DistributedCoordinateSegmentation::sendOnAllSockets | ( | Sirikata::Protocol::CSeg::CSegMessage | csegMessage, |
std::map< ServerID, SocketContainer > | socketList | ||
) | [private] |
References mLeasedSocketsToCSEGServers, mSocketsToCSEGServersMutex, Sirikata::SocketContainer::socket(), and writeCSEGMessage().
Referenced by sendToAllCSEGServers().
void Sirikata::DistributedCoordinateSegmentation::sendToAllCSEGServers | ( | Sirikata::Protocol::CSeg::CSegMessage & | csegMessage | ) | [private] |
void Sirikata::DistributedCoordinateSegmentation::sendToAllSpaceServers | ( | Sirikata::Protocol::CSeg::CSegMessage & | csegMessage | ) | [private] |
void Sirikata::DistributedCoordinateSegmentation::serializeBSPTree | ( | SerializedBSPTree * | serializedBSPTree | ) | [private] |
References mCSEGReadWriteMutex, mTopLevelRegion, and traverseAndStoreTree().
BoundingBoxList Sirikata::DistributedCoordinateSegmentation::serverRegionCached | ( | const ServerID & | server | ) | [virtual] |
References mWholeTreeServerRegionMap.
Referenced by Sirikata::LoadBalancer::service().
void Sirikata::DistributedCoordinateSegmentation::service | ( | ) | [private] |
References mCSEGReadWriteMutex, mLoadBalancer, and Sirikata::LoadBalancer::service().
Referenced by poll().
void Sirikata::DistributedCoordinateSegmentation::startAccepting | ( | ) | [private] |
References accept_handler(), mAcceptor, mIOService, and mSocket.
Referenced by accept_handler(), and DistributedCoordinateSegmentation().
void Sirikata::DistributedCoordinateSegmentation::startAcceptingLLRequests | ( | ) | [private] |
References acceptLLTreeRequestHandler(), mLLIOService, mLLTreeAcceptor, and mLLTreeAcceptorSocket.
Referenced by acceptLLTreeRequestHandler(), and handleSelfLookup().
void Sirikata::DistributedCoordinateSegmentation::stop | ( | ) | [virtual] |
Stop scheduling this service.
Note that this does not immediately stop the service, it simply guarantees the service will not be scheduled again. This allows outstanding events to be handled properly.
Reimplemented from Sirikata::PollingService.
References mIOService, and mLLIOService.
void Sirikata::DistributedCoordinateSegmentation::subdivideTopLevelRegion | ( | SegmentedRegion * | region, |
Vector3ui32 | perdim, | ||
int & | numServersAssigned | ||
) | [private] |
References CSEG_LOG, Sirikata::Logging::info, Sirikata::isPowerOfTwo(), Sirikata::SegmentedRegion::mBoundingBox, Sirikata::SegmentedRegion::mLeftChild, Sirikata::SegmentedRegion::mRightChild, Sirikata::SegmentedRegion::mServer, Sirikata::SegmentedRegion::mSplitAxis, X, Y, and Z.
Referenced by DistributedCoordinateSegmentation().
void Sirikata::DistributedCoordinateSegmentation::traverseAndStoreTree | ( | SegmentedRegion * | region, |
uint32 & | idx, | ||
SerializedBSPTree * | serializedTree | ||
) | [private] |
References CSEG_LOG, Sirikata::Logging::insane, Sirikata::SegmentedRegion::mBoundingBox, Sirikata::SerializedSegmentedRegion::mBoundingBox, Sirikata::SegmentedRegion::mLeafCount, Sirikata::SerializedSegmentedRegion::mLeafCount, Sirikata::SegmentedRegion::mLeftChild, Sirikata::SerializedSegmentedRegion::mLeftChildIdx, Sirikata::SegmentedRegion::mRightChild, Sirikata::SerializedSegmentedRegion::mRightChildIdx, Sirikata::SerializedBSPTree::mSegmentedRegions, Sirikata::SegmentedRegion::mServer, Sirikata::SerializedSegmentedRegion::mServerID, and Sirikata::SerializedBBox::serialize().
Referenced by serializeBSPTree().
void Sirikata::DistributedCoordinateSegmentation::writeCSEGMessage | ( | boost::shared_ptr< tcp::socket > | socket, |
Sirikata::Protocol::CSeg::CSegMessage & | csegMessage | ||
) | [private] |
References Sirikata::serializePBJMessage().
Referenced by asyncLLRead(), asyncRead(), lookupBBoxOnSocket(), lookupOnSocket(), requestServerRegionsOnSockets(), sendLoadReportOnSocket(), sendOnAllSockets(), sendToAllSpaceServers(), writeLookupBBoxResponse(), writeLookupResponse(), and writeServerRegionResponse().
void Sirikata::DistributedCoordinateSegmentation::writeLookupBBoxResponse | ( | boost::shared_ptr< tcp::socket > | clientSocket, |
std::vector< ServerID > | serverList | ||
) | [private] |
References writeCSEGMessage().
Referenced by handleLookupBBox(), and lookupBBoxOnSocket().
void Sirikata::DistributedCoordinateSegmentation::writeLookupResponse | ( | boost::shared_ptr< tcp::socket > | socket, |
BoundingBox3f & | bbox, | ||
ServerID | sid | ||
) | [private] |
References writeCSEGMessage().
Referenced by handleLookup(), and lookupOnSocket().
void Sirikata::DistributedCoordinateSegmentation::writeServerRegionResponse | ( | boost::shared_ptr< tcp::socket > | socket, |
BoundingBoxList | boundingBoxlist | ||
) | [private] |
References asyncRead(), and writeCSEGMessage().
Referenced by getServerRegionUncached(), and requestServerRegionsOnSockets().
friend class LoadBalancer [friend] |
boost::shared_ptr<tcp::acceptor> Sirikata::DistributedCoordinateSegmentation::mAcceptor [private] |
Referenced by DistributedCoordinateSegmentation(), and startAccepting().
boost::shared_mutex Sirikata::DistributedCoordinateSegmentation::mCSEGReadWriteMutex [private] |
Referenced by asyncLLRead(), asyncRead(), serializeBSPTree(), and service().
std::map<String, SegmentedRegion*> Sirikata::DistributedCoordinateSegmentation::mHigherLevelTrees [private] |
boost::asio::io_service Sirikata::DistributedCoordinateSegmentation::mIOService [private] |
Referenced by DistributedCoordinateSegmentation(), doSocketCreation(), ioServicingLoop(), sendToAllSpaceServers(), startAccepting(), and stop().
std::map<ServerID, SocketQueuePtr > Sirikata::DistributedCoordinateSegmentation::mLeasedSocketsToCSEGServers [private] |
boost::asio::io_service Sirikata::DistributedCoordinateSegmentation::mLLIOService [private] |
Referenced by handleSelfLookup(), llIOServicingLoop(), startAcceptingLLRequests(), and stop().
boost::shared_ptr<tcp::acceptor> Sirikata::DistributedCoordinateSegmentation::mLLTreeAcceptor [private] |
Referenced by handleSelfLookup(), and startAcceptingLLRequests().
boost::shared_ptr<tcp::socket> Sirikata::DistributedCoordinateSegmentation::mLLTreeAcceptorSocket [private] |
Referenced by acceptLLTreeRequestHandler(), and startAcceptingLLRequests().
Referenced by asyncLLRead(), handleLoadReport(), numServers(), and service().
std::map<String, SegmentedRegion*> Sirikata::DistributedCoordinateSegmentation::mLowerLevelTrees [private] |
std::map<ServerID, BoundingBoxList > Sirikata::DistributedCoordinateSegmentation::mLowerTreeServerRegionMap [private] |
Referenced by asyncLLRead(), and Sirikata::LoadBalancer::service().
Referenced by createSocketContainers().
boost::shared_ptr<tcp::socket> Sirikata::DistributedCoordinateSegmentation::mSocket [private] |
Referenced by accept_handler(), and startAccepting().
boost::shared_mutex Sirikata::DistributedCoordinateSegmentation::mSocketsToCSEGServersMutex [private] |
std::vector<SegmentationChangeListener> Sirikata::DistributedCoordinateSegmentation::mSpacePeers [private] |
Referenced by asyncRead(), and sendToAllSpaceServers().
std::map<ServerID, BoundingBoxList > Sirikata::DistributedCoordinateSegmentation::mWholeTreeServerRegionMap [private] |