Sirikata
|
#include <AggregateManager.hpp>
Classes | |
struct | AggregateObject |
struct | LocationInfo |
class | LocationServiceCache |
Public Member Functions | |
AggregateManager (LocationService *loc, Transfer::OAuthParamsPtr oauth, const String &username, const String &local_path, const String &local_url_prefix, uint16 n_gen_threads, uint16 n_upload_threads, bool skip_gen, bool skip_upload) | |
Create an AggregateManager. | |
~AggregateManager () | |
void | addAggregate (const UUID &uuid) |
void | removeAggregate (const UUID &uuid) |
void | addChild (const UUID &uuid, const UUID &child_uuid) |
void | removeChild (const UUID &uuid, const UUID &child_uuid) |
void | aggregateObserved (const UUID &objid, uint32 nobservers, uint32 nchildren) |
void | generateAggregateMesh (const UUID &uuid, const Duration &delayFor=Duration::milliseconds(1.0f)) |
void | generateAggregateMesh (const UUID &uuid, AggregateObjectPtr aggObject, const Duration &delayFor=Duration::milliseconds(1.0f)) |
void | metadataFinished (Time t, const UUID uuid, const UUID child_uuid, std::string meshName, uint8 attemptNo, std::tr1::shared_ptr< Transfer::MetadataRequest > request, std::tr1::shared_ptr< Transfer::RemoteFileMetadata > response) |
void | chunkFinished (Time t, const UUID uuid, const UUID child_uuid, std::string meshName, std::tr1::shared_ptr< Transfer::ChunkRequest > request, std::tr1::shared_ptr< const Transfer::DenseData > response) |
Private Types | |
enum | { MAX_NUM_GENERATION_THREADS = 16 } |
enum | { MAX_NUM_UPLOAD_THREADS = 16 } |
enum | { GEN_SUCCESS = 1, CHILDREN_NOT_YET_GEN = 2, NEWER_REQUEST = 3, MISSING_LOC_INFO = 4, MISSING_CHILD_LOC_INFO = 5, MISSING_CHILD_MESHES = 6 } |
typedef struct Sirikata::AggregateManager::LocationInfo | LocationInfo |
typedef std::tr1::shared_ptr < AggregateObject > | AggregateObjectPtr |
typedef std::tr1::unordered_map< UUID, AggregateObjectPtr, UUID::Hasher > | AggregateObjectsMap |
Private Member Functions | |
std::tr1::shared_ptr < LocationInfo > | getCachedLocInfo (const UUID &uuid) |
virtual void | localObjectAdded (const UUID &uuid, bool agg, const TimedMotionVector3f &loc, const TimedMotionQuaternion &orient, const AggregateBoundingInfo &bounds, const String &mesh, const String &physics, const String &zernike) |
virtual void | localObjectRemoved (const UUID &uuid, bool agg) |
virtual void | localLocationUpdated (const UUID &uuid, bool agg, const TimedMotionVector3f &newval) |
virtual void | localOrientationUpdated (const UUID &uuid, bool agg, const TimedMotionQuaternion &newval) |
virtual void | localBoundsUpdated (const UUID &uuid, bool agg, const AggregateBoundingInfo &newval) |
virtual void | localMeshUpdated (const UUID &uuid, bool agg, const String &newval) |
virtual void | replicaObjectAdded (const UUID &uuid, const TimedMotionVector3f &loc, const TimedMotionQuaternion &orient, const AggregateBoundingInfo &bounds, const String &mesh, const String &physics, const String &zernike) |
virtual void | replicaObjectRemoved (const UUID &uuid) |
virtual void | replicaLocationUpdated (const UUID &uuid, const TimedMotionVector3f &newval) |
virtual void | replicaOrientationUpdated (const UUID &uuid, const TimedMotionQuaternion &newval) |
virtual void | replicaBoundsUpdated (const UUID &uuid, const AggregateBoundingInfo &newval) |
virtual void | replicaMeshUpdated (const UUID &uuid, const String &newval) |
void | addToInMemoryCache (const String &meshName, const Mesh::MeshdataPtr mdptr) |
void | uploadThreadMain (uint8 i) |
bool | findChild (std::vector< AggregateObjectPtr > &v, const UUID &uuid) |
void | removeChild (std::vector< AggregateObjectPtr > &v, const UUID &uuid) |
void | iRemoveChild (const UUID &uuid, const UUID &child_uuid) |
void | getLeaves (const std::vector< UUID > &mIndividualObjects) |
void | addLeavesUpTree (UUID leaf_uuid, UUID uuid) |
bool | isAggregate (const UUID &uuid) |
void | updateChildrenTreeLevel (const UUID &uuid, uint16 treeLevel) |
void | addDirtyAggregates (UUID uuid) |
void | queueDirtyAggregates (Time postTime) |
void | generateMeshesFromQueue (uint8 i) |
uint32 | generateAggregateMeshAsync (const UUID uuid, Time postTime, bool generateSiblings=true) |
void | aggregationThreadMain (uint8 i) |
void | updateAggregateLocMesh (UUID uuid, String mesh) |
void | uploadAggregateMesh (Mesh::MeshdataPtr agg_mesh, AggregateObjectPtr aggObject, std::tr1::unordered_map< String, String > textureSet, uint32 retryAttempt, Time uploadStartTime) |
void | handleUploadFinished (Transfer::UploadRequestPtr request, const Transfer::URI &path, Mesh::MeshdataPtr agg_mesh, AggregateObjectPtr aggObject, std::tr1::unordered_map< String, String > textureSet, uint32 retryAttempt, const Time &uploadStartTime) |
void | sendKeepAlives () |
void | handleKeepAliveResponse (const UUID &objid, std::tr1::shared_ptr< Transfer::HttpManager::HttpResponse > response, Transfer::HttpManager::ERR_TYPE error, const boost::system::error_code &boost_error) |
bool | cleanUpChild (const UUID &parent_uuid, const UUID &child_id) |
void | removeStaleLeaves () |
void | commandStats (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid) |
Private Attributes | |
uint16 | mNumGenerationThreads |
Thread * | mAggregationThreads [MAX_NUM_GENERATION_THREADS] |
Network::IOService * | mAggregationServices [MAX_NUM_GENERATION_THREADS] |
Network::IOStrand * | mAggregationStrands [MAX_NUM_GENERATION_THREADS] |
Network::IOWork * | mIOWorks [MAX_NUM_GENERATION_THREADS] |
LocationServiceCache | mLocationServiceCache |
boost::mutex | mLocCacheMutex |
LocationService * | mLoc |
boost::mutex | mModelsSystemMutex |
ModelsSystem * | mModelsSystem |
Sirikata::Mesh::MeshSimplifier | mMeshSimplifier |
Sirikata::Mesh::Filter * | mCenteringFilter |
boost::mutex | mAggregateObjectsMutex |
AggregateObjectsMap | mAggregateObjects |
Time | mAggregateGenerationStartTime |
std::tr1::unordered_map< UUID, AggregateObjectPtr, UUID::Hasher > | mDirtyAggregateObjects |
boost::mutex | mObjectsByPriorityLocks [MAX_NUM_GENERATION_THREADS] |
std::map< float, std::deque < AggregateObjectPtr > > | mObjectsByPriority [MAX_NUM_GENERATION_THREADS] |
boost::mutex | mMeshStoreMutex |
std::tr1::unordered_map < String, Mesh::MeshdataPtr > | mMeshStore |
std::tr1::shared_ptr < Transfer::TransferPool > | mTransferPool |
Transfer::TransferMediator * | mTransferMediator |
Transfer::OAuthParamsPtr | mOAuth |
const String | mCDNUsername |
Duration | mModelTTL |
Poller * | mCDNKeepAlivePoller |
const String | mLocalPath |
const String | mLocalURLPrefix |
bool | mSkipGenerate |
bool | mSkipUpload |
uint16 | mNumUploadThreads |
Thread * | mUploadThreads [MAX_NUM_UPLOAD_THREADS] |
Network::IOService * | mUploadServices [MAX_NUM_UPLOAD_THREADS] |
Network::IOStrand * | mUploadStrands [MAX_NUM_UPLOAD_THREADS] |
Network::IOWork * | mUploadWorks [MAX_NUM_UPLOAD_THREADS] |
AtomicValue< uint32 > | mRawAggregateUpdates |
AtomicValue< uint32 > | mAggregatesQueued |
AtomicValue< uint32 > | mAggregatesGenerated |
AtomicValue< uint32 > | mAggregatesFailedToGenerate |
AtomicValue< uint32 > | mAggregatesUploaded |
AtomicValue< uint32 > | mAggregatesFailedToUpload |
boost::mutex | mStatsMutex |
Duration | mAggregateCumulativeGenerationTime |
Duration | mAggregateCumulativeUploadTime |
uint64 | mAggregateCumulativeDataSize |
typedef std::tr1::shared_ptr<AggregateObject> Sirikata::AggregateManager::AggregateObjectPtr [private] |
typedef std::tr1::unordered_map<UUID, AggregateObjectPtr, UUID::Hasher > Sirikata::AggregateManager::AggregateObjectsMap [private] |
typedef struct Sirikata::AggregateManager::LocationInfo Sirikata::AggregateManager::LocationInfo [private] |
anonymous enum [private] |
Sirikata::AggregateManager::AggregateManager | ( | LocationService * | loc, |
Transfer::OAuthParamsPtr | oauth, | ||
const String & | username, | ||
const String & | local_path, | ||
const String & | local_url_prefix, | ||
uint16 | n_gen_threads, | ||
uint16 | n_upload_threads, | ||
bool | skip_gen, | ||
bool | skip_upload | ||
) |
Create an AggregateManager.
OAuth upload parameters for the CDN. If omitted, uploads will not be attempted User name for account your OAuth params let you upload to on the the CDN
local_path | if non-empty and OAuth values are not specified, generate local meshes that create file:/// URLs. Useful to avoid uploading to the CDN, but in distributed systems will obviously cause failures to download meshes on other nodes. |
local_url_prefix | used in conjunction with local_path. If provided, specifies the URL prefix to prepend to the filename to get the full mesh URL, allowing you to publicize the meshes by using something other than a file:// URL, e.g. if you run a web server on your host. |
n_gen_threads | number of threads to use for creating aggregate meshes |
n_upload_threads | number of threads to use for uploading |
skip_gen | if true, skip the generation phase, but pretend it was successful. Useful for testing without spending CPU on generating meshes. Forces skip_upload to be true |
skip_upload | if true, skip the upload phase, but pretend it was successful. Useful for testing, but since the mesh cache is limited, this will eventually cause later aggregates to fail to be generated |
References Sirikata::LocationService::addListener(), aggregationThreadMain(), Sirikata::Context::commander(), commandStats(), Sirikata::LocationService::context(), Sirikata::Network::IOService::createStrand(), Sirikata::FactoryImpl< T, Ftype >::getConstructor(), Sirikata::Transfer::TransferMediator::getSingleton(), Sirikata::ModelsSystemFactory::getSingleton(), mAggregationServices, mAggregationStrands, mAggregationThreads, mCDNKeepAlivePoller, mCenteringFilter, mIOWorks, mLoc, mModelsSystem, mNumGenerationThreads, mNumUploadThreads, mTransferMediator, mTransferPool, mUploadServices, mUploadStrands, mUploadThreads, mUploadWorks, Sirikata::Transfer::TransferMediator::registerClient(), Sirikata::Command::Commander::registerCommand(), removeStaleLeaves(), sendKeepAlives(), Sirikata::Poller::start(), and uploadThreadMain().
Sirikata::AggregateManager::~AggregateManager | ( | ) |
References Sirikata::Thread::join(), mAggregationServices, mAggregationStrands, mAggregationThreads, mCDNKeepAlivePoller, mCenteringFilter, mIOWorks, mModelsSystem, mNumGenerationThreads, mNumUploadThreads, mUploadServices, mUploadStrands, mUploadThreads, mUploadWorks, Sirikata::Network::IOService::stop(), and Sirikata::Poller::stop().
void Sirikata::AggregateManager::addAggregate | ( | const UUID & | uuid | ) |
References addDirtyAggregates(), AGG_LOG, Sirikata::Logging::detailed, mAggregateGenerationStartTime, mAggregateObjects, mAggregateObjectsMutex, mAggregationStrands, mRawAggregateUpdates, Sirikata::Timer::now(), Sirikata::Network::IOStrand::post(), queueDirtyAggregates(), Sirikata::UUID::toString(), and updateChildrenTreeLevel().
Referenced by Sirikata::LibproxProximityBase::aggregateChildAdded().
void Sirikata::AggregateManager::addDirtyAggregates | ( | UUID | uuid | ) | [private] |
References mAggregateObjects, mDirtyAggregateObjects, and Sirikata::UUID::null().
Referenced by addChild(), generateAggregateMesh(), and iRemoveChild().
References getCachedLocInfo(), mAggregateObjects, mDirtyAggregateObjects, Sirikata::UUID::null(), obj, ONE_PIXEL_SOLID_ANGLE, and TWO_PI.
Referenced by getLeaves().
void Sirikata::AggregateManager::addToInMemoryCache | ( | const String & | meshName, |
const Mesh::MeshdataPtr | mdptr | ||
) | [private] |
References mMeshStore, and mMeshStoreMutex.
Referenced by handleUploadFinished(), metadataFinished(), and uploadAggregateMesh().
void Sirikata::AggregateManager::aggregateObserved | ( | const UUID & | objid, |
uint32 | nobservers, | ||
uint32 | nchildren | ||
) |
References mAggregateObjects, and mAggregateObjectsMutex.
Referenced by Sirikata::LibproxProximityBase::aggregateObserved().
void Sirikata::AggregateManager::aggregationThreadMain | ( | uint8 | i | ) | [private] |
References mAggregationServices, and Sirikata::Network::IOService::run().
Referenced by AggregateManager().
void Sirikata::AggregateManager::chunkFinished | ( | Time | t, |
const UUID | uuid, | ||
const UUID | child_uuid, | ||
std::string | meshName, | ||
std::tr1::shared_ptr< Transfer::ChunkRequest > | request, | ||
std::tr1::shared_ptr< const Transfer::DenseData > | response | ||
) |
bool Sirikata::AggregateManager::cleanUpChild | ( | const UUID & | parent_uuid, |
const UUID & | child_id | ||
) | [private] |
References mAggregateObjects.
Referenced by iRemoveChild(), and removeAggregate().
void Sirikata::AggregateManager::commandStats | ( | const Command::Command & | cmd, |
Command::Commander * | cmdr, | ||
Command::CommandID | cmdid | ||
) | [private] |
References Sirikata::Command::EmptyResult(), mAggregateCumulativeDataSize, mAggregateCumulativeGenerationTime, mAggregateCumulativeUploadTime, mAggregatesFailedToGenerate, mAggregatesFailedToUpload, mAggregatesGenerated, mAggregatesQueued, mAggregatesUploaded, mDirtyAggregateObjects, mNumGenerationThreads, mObjectsByPriority, mObjectsByPriorityLocks, mRawAggregateUpdates, mStatsMutex, Sirikata::AtomicValue< T >::read(), and Sirikata::Command::Commander::result().
Referenced by AggregateManager().
bool Sirikata::AggregateManager::findChild | ( | std::vector< AggregateObjectPtr > & | v, |
const UUID & | uuid | ||
) | [private] |
void Sirikata::AggregateManager::generateAggregateMesh | ( | const UUID & | uuid, |
const Duration & | delayFor = Duration::milliseconds(1.0f) |
||
) |
References mAggregateObjects, mAggregateObjectsMutex, and mRawAggregateUpdates.
Referenced by Sirikata::LibproxProximityBase::aggregateBoundsUpdated().
void Sirikata::AggregateManager::generateAggregateMesh | ( | const UUID & | uuid, |
AggregateObjectPtr | aggObject, | ||
const Duration & | delayFor = Duration::milliseconds(1.0f) |
||
) |
uint32 Sirikata::AggregateManager::generateAggregateMeshAsync | ( | const UUID | uuid, |
Time | postTime, | ||
bool | generateSiblings = true |
||
) | [private] |
References AGG_LOG, CHILDREN_NOT_YET_GEN, Sirikata::Mesh::ComputeBounds(), Sirikata::LocationService::context(), Sirikata::Transfer::URL::context(), Sirikata::Logging::detailed, Sirikata::Transfer::URI::empty(), Sirikata::Transfer::URL::empty(), GEN_SUCCESS, Sirikata::Mesh::GeometryInstance::geometryIndex, getCachedLocInfo(), Sirikata::Matrix4x4< float32 >::identity(), Sirikata::Logging::info, Sirikata::Logging::insane, isAggregate(), Sirikata::Mesh::LightInstance::lightIndex, mAggregateCumulativeGenerationTime, mAggregateGenerationStartTime, mAggregateObjects, mAggregateObjectsMutex, mAggregatesGenerated, Sirikata::Context::mainStrand, Sirikata::Mesh::GeometryInstance::materialBindingMap, metadataFinished(), MISSING_CHILD_LOC_INFO, MISSING_CHILD_MESHES, MISSING_LOC_INFO, mLoc, mMeshSimplifier, mMeshStore, mMeshStoreMutex, mNumUploadThreads, mSkipGenerate, mStatsMutex, mTransferPool, mUploadStrands, NEWER_REQUEST, Sirikata::Mesh::Meshdata::GeometryInstanceIterator::next(), Sirikata::Quaternion::normal(), Sirikata::Timer::now(), Sirikata::Time::null(), Sirikata::Mesh::GeometryInstance::parentNode, Sirikata::Network::IOStrand::post(), Sirikata::Matrix4x4< float32 >::scale(), Sirikata::Mesh::MeshSimplifier::simplify(), Sirikata::texfilename(), Sirikata::Transfer::URI::toString(), Sirikata::UUID::toString(), updateAggregateLocMesh(), uploadAggregateMesh(), url, Sirikata::Vector4< scalar >::w, Sirikata::Vector4< scalar >::x, Sirikata::Vector4< scalar >::y, and Sirikata::Vector4< scalar >::z.
Referenced by generateMeshesFromQueue().
void Sirikata::AggregateManager::generateMeshesFromQueue | ( | uint8 | i | ) | [private] |
References AGG_LOG, CHILDREN_NOT_YET_GEN, Sirikata::Logging::error, GEN_SUCCESS, generateAggregateMeshAsync(), mAggregatesFailedToGenerate, mAggregationStrands, mObjectsByPriority, mObjectsByPriorityLocks, Sirikata::Timer::now(), Sirikata::Time::null(), and Sirikata::Network::IOStrand::post().
Referenced by queueDirtyAggregates().
std::tr1::shared_ptr< AggregateManager::LocationInfo > Sirikata::AggregateManager::getCachedLocInfo | ( | const UUID & | uuid | ) | [private] |
void Sirikata::AggregateManager::getLeaves | ( | const std::vector< UUID > & | mIndividualObjects | ) | [private] |
References addLeavesUpTree().
Referenced by queueDirtyAggregates().
void Sirikata::AggregateManager::handleKeepAliveResponse | ( | const UUID & | objid, |
std::tr1::shared_ptr< Transfer::HttpManager::HttpResponse > | response, | ||
Transfer::HttpManager::ERR_TYPE | error, | ||
const boost::system::error_code & | boost_error | ||
) | [private] |
References AGG_LOG, Sirikata::Transfer::HttpManager::BOOST_ERROR, Sirikata::LocationService::context(), Sirikata::Logging::detailed, mAggregateObjects, mAggregateObjectsMutex, mLoc, mModelTTL, Sirikata::Context::recentSimTime(), Sirikata::Transfer::HttpManager::REQUEST_PARSING_FAILED, Sirikata::Transfer::HttpManager::RESPONSE_PARSING_FAILED, and Sirikata::Transfer::HttpManager::SUCCESS.
Referenced by sendKeepAlives().
void Sirikata::AggregateManager::handleUploadFinished | ( | Transfer::UploadRequestPtr | request, |
const Transfer::URI & | path, | ||
Mesh::MeshdataPtr | agg_mesh, | ||
AggregateObjectPtr | aggObject, | ||
std::tr1::unordered_map< String, String > | textureSet, | ||
uint32 | retryAttempt, | ||
const Time & | uploadStartTime | ||
) | [private] |
References addToInMemoryCache(), AGG_LOG, Sirikata::LocationService::context(), Sirikata::Transfer::URI::empty(), Sirikata::Logging::error, Sirikata::Transfer::URL::fullpath(), getCachedLocInfo(), Sirikata::Logging::info, Sirikata::Logging::insane, mAggregateCumulativeUploadTime, mAggregateObjects, mAggregateObjectsMutex, mAggregatesFailedToUpload, mAggregatesUploaded, Sirikata::Context::mainStrand, mLoc, mModelTTL, mNumUploadThreads, mStatsMutex, mUploadStrands, Sirikata::Timer::now(), Sirikata::Network::IOStrand::post(), Sirikata::Context::recentSimTime(), Sirikata::Transfer::URI::toString(), Sirikata::UUID::toString(), updateAggregateLocMesh(), and uploadAggregateMesh().
Referenced by uploadAggregateMesh().
void Sirikata::AggregateManager::iRemoveChild | ( | const UUID & | uuid, |
const UUID & | child_uuid | ||
) | [private] |
References addDirtyAggregates(), AGG_LOG, cleanUpChild(), Sirikata::Logging::detailed, mAggregateGenerationStartTime, mAggregateObjects, mAggregationStrands, mRawAggregateUpdates, Sirikata::Timer::now(), Sirikata::Network::IOStrand::post(), queueDirtyAggregates(), and Sirikata::UUID::toString().
Referenced by removeChild().
bool Sirikata::AggregateManager::isAggregate | ( | const UUID & | uuid | ) | [private] |
References mAggregateObjects, and mAggregateObjectsMutex.
Referenced by generateAggregateMeshAsync().
void Sirikata::AggregateManager::localBoundsUpdated | ( | const UUID & | uuid, |
bool | agg, | ||
const AggregateBoundingInfo & | newval | ||
) | [private, virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References Sirikata::AggregateManager::LocationServiceCache::getLocationInfo(), mLocationServiceCache, and mLocCacheMutex.
void Sirikata::AggregateManager::localLocationUpdated | ( | const UUID & | uuid, |
bool | agg, | ||
const TimedMotionVector3f & | newval | ||
) | [private, virtual] |
void Sirikata::AggregateManager::localMeshUpdated | ( | const UUID & | uuid, |
bool | agg, | ||
const String & | newval | ||
) | [private, virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References Sirikata::AggregateManager::LocationServiceCache::getLocationInfo(), mLocationServiceCache, and mLocCacheMutex.
void Sirikata::AggregateManager::localObjectAdded | ( | const UUID & | uuid, |
bool | agg, | ||
const TimedMotionVector3f & | loc, | ||
const TimedMotionQuaternion & | orient, | ||
const AggregateBoundingInfo & | bounds, | ||
const String & | mesh, | ||
const String & | physics, | ||
const String & | zernike | ||
) | [private, virtual] |
void Sirikata::AggregateManager::localObjectRemoved | ( | const UUID & | uuid, |
bool | agg | ||
) | [private, virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References mLocationServiceCache, mLocCacheMutex, and Sirikata::AggregateManager::LocationServiceCache::removeLocationInfo().
void Sirikata::AggregateManager::localOrientationUpdated | ( | const UUID & | uuid, |
bool | agg, | ||
const TimedMotionQuaternion & | newval | ||
) | [private, virtual] |
void Sirikata::AggregateManager::metadataFinished | ( | Time | t, |
const UUID | uuid, | ||
const UUID | child_uuid, | ||
std::string | meshName, | ||
uint8 | attemptNo, | ||
std::tr1::shared_ptr< Transfer::MetadataRequest > | request, | ||
std::tr1::shared_ptr< Transfer::RemoteFileMetadata > | response | ||
) |
void Sirikata::AggregateManager::queueDirtyAggregates | ( | Time | postTime | ) | [private] |
References generateMeshesFromQueue(), getCachedLocInfo(), getLeaves(), HUMAN_FOV, mAggregateGenerationStartTime, mAggregateObjects, mAggregatesQueued, mAggregationStrands, MAX_NUM_GENERATION_THREADS, mDirtyAggregateObjects, mNumGenerationThreads, mObjectsByPriority, mObjectsByPriorityLocks, Sirikata::Network::IOStrand::post(), and TWO_PI.
Referenced by addChild(), generateAggregateMesh(), and iRemoveChild().
void Sirikata::AggregateManager::removeAggregate | ( | const UUID & | uuid | ) |
void Sirikata::AggregateManager::removeChild | ( | std::vector< AggregateObjectPtr > & | v, |
const UUID & | uuid | ||
) | [private] |
Referenced by Sirikata::LibproxProximityBase::aggregateChildRemoved().
References iRemoveChild(), and mAggregateObjectsMutex.
void Sirikata::AggregateManager::removeStaleLeaves | ( | ) | [private] |
References mAggregateObjects, mAggregateObjectsMutex, mAggregationStrands, and Sirikata::Network::IOStrand::post().
Referenced by AggregateManager().
void Sirikata::AggregateManager::replicaBoundsUpdated | ( | const UUID & | uuid, |
const AggregateBoundingInfo & | newval | ||
) | [private, virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References Sirikata::AggregateManager::LocationServiceCache::getLocationInfo(), mLocationServiceCache, and mLocCacheMutex.
void Sirikata::AggregateManager::replicaLocationUpdated | ( | const UUID & | uuid, |
const TimedMotionVector3f & | newval | ||
) | [private, virtual] |
void Sirikata::AggregateManager::replicaMeshUpdated | ( | const UUID & | uuid, |
const String & | newval | ||
) | [private, virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References Sirikata::AggregateManager::LocationServiceCache::getLocationInfo(), mLocationServiceCache, and mLocCacheMutex.
void Sirikata::AggregateManager::replicaObjectAdded | ( | const UUID & | uuid, |
const TimedMotionVector3f & | loc, | ||
const TimedMotionQuaternion & | orient, | ||
const AggregateBoundingInfo & | bounds, | ||
const String & | mesh, | ||
const String & | physics, | ||
const String & | zernike | ||
) | [private, virtual] |
void Sirikata::AggregateManager::replicaObjectRemoved | ( | const UUID & | uuid | ) | [private, virtual] |
Reimplemented from Sirikata::LocationServiceListener.
References mLocationServiceCache, mLocCacheMutex, and Sirikata::AggregateManager::LocationServiceCache::removeLocationInfo().
void Sirikata::AggregateManager::replicaOrientationUpdated | ( | const UUID & | uuid, |
const TimedMotionQuaternion & | newval | ||
) | [private, virtual] |
void Sirikata::AggregateManager::sendKeepAlives | ( | ) | [private] |
References AGG_LOG, Sirikata::LocationService::context(), Sirikata::Logging::detailed, Sirikata::Transfer::OAuthHttpManager::get(), handleKeepAliveResponse(), mAggregateObjects, mAggregateObjectsMutex, mCDNUsername, mLoc, mModelTTL, mOAuth, Sirikata::Time::null(), and Sirikata::Context::recentSimTime().
Referenced by AggregateManager().
void Sirikata::AggregateManager::updateAggregateLocMesh | ( | UUID | uuid, |
String | mesh | ||
) | [private] |
References Sirikata::LocationService::contains(), mLoc, and Sirikata::LocationService::updateLocalAggregateMesh().
Referenced by generateAggregateMeshAsync(), handleUploadFinished(), and uploadAggregateMesh().
void Sirikata::AggregateManager::updateChildrenTreeLevel | ( | const UUID & | uuid, |
uint16 | treeLevel | ||
) | [private] |
References mAggregateObjects.
Referenced by addChild().
void Sirikata::AggregateManager::uploadAggregateMesh | ( | Mesh::MeshdataPtr | agg_mesh, |
AggregateObjectPtr | aggObject, | ||
std::tr1::unordered_map< String, String > | textureSet, | ||
uint32 | retryAttempt, | ||
Time | uploadStartTime | ||
) | [private] |
References addToInMemoryCache(), AGG_LOG, Sirikata::Mesh::Filter::apply(), Sirikata::LocationService::context(), Sirikata::ModelsSystem::convertVisual(), Sirikata::Transfer::URL::empty(), Sirikata::Logging::error, Sirikata::Transfer::URL::fullpath(), handleUploadFinished(), Sirikata::Logging::info, Sirikata::Logging::insane, Sirikata::ModelsSystem::load(), mAggregateCumulativeDataSize, mAggregateCumulativeUploadTime, mAggregatesFailedToUpload, mAggregatesUploaded, Sirikata::Context::mainStrand, mCDNUsername, mCenteringFilter, mLoc, mLocalPath, mLocalURLPrefix, mModelsSystem, mModelsSystemMutex, mModelTTL, mOAuth, mSkipUpload, mStatsMutex, mTransferPool, Sirikata::Timer::now(), Sirikata::Time::null(), Sirikata::Network::IOStrand::post(), Sirikata::UUID::toString(), and updateAggregateLocMesh().
Referenced by generateAggregateMeshAsync(), and handleUploadFinished().
void Sirikata::AggregateManager::uploadThreadMain | ( | uint8 | i | ) | [private] |
References mUploadServices, and Sirikata::Network::IOService::run().
Referenced by AggregateManager().
uint64 Sirikata::AggregateManager::mAggregateCumulativeDataSize [private] |
Referenced by commandStats(), and uploadAggregateMesh().
Referenced by commandStats(), and generateAggregateMeshAsync().
Referenced by commandStats(), handleUploadFinished(), and uploadAggregateMesh().
Referenced by addChild(), generateAggregateMesh(), generateAggregateMeshAsync(), iRemoveChild(), and queueDirtyAggregates().
Referenced by addAggregate(), addChild(), addDirtyAggregates(), addLeavesUpTree(), aggregateObserved(), cleanUpChild(), generateAggregateMesh(), generateAggregateMeshAsync(), handleKeepAliveResponse(), handleUploadFinished(), iRemoveChild(), isAggregate(), metadataFinished(), queueDirtyAggregates(), removeAggregate(), removeStaleLeaves(), sendKeepAlives(), and updateChildrenTreeLevel().
boost::mutex Sirikata::AggregateManager::mAggregateObjectsMutex [private] |
AtomicValue<uint32> Sirikata::AggregateManager::mAggregatesFailedToGenerate [private] |
Referenced by commandStats(), and generateMeshesFromQueue().
AtomicValue<uint32> Sirikata::AggregateManager::mAggregatesFailedToUpload [private] |
Referenced by commandStats(), handleUploadFinished(), and uploadAggregateMesh().
AtomicValue<uint32> Sirikata::AggregateManager::mAggregatesGenerated [private] |
Referenced by commandStats(), and generateAggregateMeshAsync().
AtomicValue<uint32> Sirikata::AggregateManager::mAggregatesQueued [private] |
Referenced by commandStats(), and queueDirtyAggregates().
AtomicValue<uint32> Sirikata::AggregateManager::mAggregatesUploaded [private] |
Referenced by commandStats(), handleUploadFinished(), and uploadAggregateMesh().
Network::IOService* Sirikata::AggregateManager::mAggregationServices[MAX_NUM_GENERATION_THREADS] [private] |
Referenced by AggregateManager(), aggregationThreadMain(), and ~AggregateManager().
Network::IOStrand* Sirikata::AggregateManager::mAggregationStrands[MAX_NUM_GENERATION_THREADS] [private] |
Thread* Sirikata::AggregateManager::mAggregationThreads[MAX_NUM_GENERATION_THREADS] [private] |
Referenced by AggregateManager(), and ~AggregateManager().
Referenced by AggregateManager(), and ~AggregateManager().
const String Sirikata::AggregateManager::mCDNUsername [private] |
Referenced by sendKeepAlives(), and uploadAggregateMesh().
Referenced by AggregateManager(), uploadAggregateMesh(), and ~AggregateManager().
std::tr1::unordered_map<UUID, AggregateObjectPtr, UUID::Hasher> Sirikata::AggregateManager::mDirtyAggregateObjects [private] |
Referenced by addDirtyAggregates(), addLeavesUpTree(), commandStats(), generateAggregateMesh(), and queueDirtyAggregates().
Network::IOWork* Sirikata::AggregateManager::mIOWorks[MAX_NUM_GENERATION_THREADS] [private] |
Referenced by AggregateManager(), and ~AggregateManager().
LocationService* Sirikata::AggregateManager::mLoc [private] |
const String Sirikata::AggregateManager::mLocalPath [private] |
Referenced by uploadAggregateMesh().
const String Sirikata::AggregateManager::mLocalURLPrefix [private] |
Referenced by uploadAggregateMesh().
Referenced by getCachedLocInfo(), localBoundsUpdated(), localLocationUpdated(), localMeshUpdated(), localObjectAdded(), localObjectRemoved(), localOrientationUpdated(), replicaBoundsUpdated(), replicaLocationUpdated(), replicaMeshUpdated(), replicaObjectAdded(), replicaObjectRemoved(), and replicaOrientationUpdated().
boost::mutex Sirikata::AggregateManager::mLocCacheMutex [private] |
Referenced by getCachedLocInfo(), localBoundsUpdated(), localLocationUpdated(), localMeshUpdated(), localObjectAdded(), localObjectRemoved(), localOrientationUpdated(), replicaBoundsUpdated(), replicaLocationUpdated(), replicaMeshUpdated(), replicaObjectAdded(), replicaObjectRemoved(), and replicaOrientationUpdated().
Referenced by generateAggregateMeshAsync().
std::tr1::unordered_map<String, Mesh::MeshdataPtr> Sirikata::AggregateManager::mMeshStore [private] |
Referenced by addToInMemoryCache(), and generateAggregateMeshAsync().
boost::mutex Sirikata::AggregateManager::mMeshStoreMutex [private] |
Referenced by addToInMemoryCache(), and generateAggregateMeshAsync().
Referenced by AggregateManager(), generateAggregateMesh(), uploadAggregateMesh(), and ~AggregateManager().
boost::mutex Sirikata::AggregateManager::mModelsSystemMutex [private] |
Referenced by uploadAggregateMesh().
Referenced by handleKeepAliveResponse(), handleUploadFinished(), sendKeepAlives(), and uploadAggregateMesh().
uint16 Sirikata::AggregateManager::mNumGenerationThreads [private] |
Referenced by AggregateManager(), commandStats(), queueDirtyAggregates(), and ~AggregateManager().
uint16 Sirikata::AggregateManager::mNumUploadThreads [private] |
Referenced by AggregateManager(), generateAggregateMeshAsync(), handleUploadFinished(), and ~AggregateManager().
Referenced by sendKeepAlives(), and uploadAggregateMesh().
std::map<float, std::deque<AggregateObjectPtr > > Sirikata::AggregateManager::mObjectsByPriority[MAX_NUM_GENERATION_THREADS] [private] |
Referenced by commandStats(), generateMeshesFromQueue(), and queueDirtyAggregates().
boost::mutex Sirikata::AggregateManager::mObjectsByPriorityLocks[MAX_NUM_GENERATION_THREADS] [private] |
Referenced by commandStats(), generateMeshesFromQueue(), and queueDirtyAggregates().
AtomicValue<uint32> Sirikata::AggregateManager::mRawAggregateUpdates [private] |
Referenced by addAggregate(), addChild(), commandStats(), generateAggregateMesh(), iRemoveChild(), and removeAggregate().
bool Sirikata::AggregateManager::mSkipGenerate [private] |
Referenced by generateAggregateMeshAsync().
bool Sirikata::AggregateManager::mSkipUpload [private] |
Referenced by uploadAggregateMesh().
boost::mutex Sirikata::AggregateManager::mStatsMutex [private] |
Referenced by commandStats(), generateAggregateMeshAsync(), handleUploadFinished(), and uploadAggregateMesh().
Referenced by AggregateManager().
std::tr1::shared_ptr<Transfer::TransferPool> Sirikata::AggregateManager::mTransferPool [private] |
Referenced by AggregateManager(), generateAggregateMeshAsync(), metadataFinished(), and uploadAggregateMesh().
Network::IOService* Sirikata::AggregateManager::mUploadServices[MAX_NUM_UPLOAD_THREADS] [private] |
Referenced by AggregateManager(), uploadThreadMain(), and ~AggregateManager().
Network::IOStrand* Sirikata::AggregateManager::mUploadStrands[MAX_NUM_UPLOAD_THREADS] [private] |
Referenced by AggregateManager(), generateAggregateMeshAsync(), handleUploadFinished(), and ~AggregateManager().
Thread* Sirikata::AggregateManager::mUploadThreads[MAX_NUM_UPLOAD_THREADS] [private] |
Referenced by AggregateManager(), and ~AggregateManager().
Network::IOWork* Sirikata::AggregateManager::mUploadWorks[MAX_NUM_UPLOAD_THREADS] [private] |
Referenced by AggregateManager(), and ~AggregateManager().