Sirikata
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
Sirikata::Graphics::PriorityDownloadPlanner Class Reference

Implementation of ResourceDownloadPlanner that orders loading by a priority metric computed on each object. More...

#include <PriorityDownloadPlanner.hpp>

Inheritance diagram for Sirikata::Graphics::PriorityDownloadPlanner:
Collaboration diagram for Sirikata::Graphics::PriorityDownloadPlanner:

List of all members.

Classes

struct  Asset
struct  Object

Public Member Functions

 PriorityDownloadPlanner (Context *c, OgreRenderer *renderer, PriorityDownloadPlannerMetricPtr metric)
 ~PriorityDownloadPlanner ()
virtual void addNewObject (Graphics::Entity *ent, const Transfer::URI &mesh)
virtual void addNewObject (ProxyObjectPtr p, Graphics::Entity *mesh)
virtual void updateObject (ProxyObjectPtr p)
virtual void removeObject (ProxyObjectPtr p)
virtual void removeObject (Graphics::Entity *ent)
virtual void poll ()
 Override this method to specify the work to be done when polling.
virtual void stop ()
 Stop scheduling this service.
PriorityDownloadPlannerMetricPtr prioritizationMetric ()
void setPrioritizationMetric (PriorityDownloadPlannerMetricPtr metric)
virtual Stats stats ()

Protected Types

typedef
std::tr1::unordered_set
< String > 
ObjectSet
typedef
std::tr1::unordered_map
< String, Object * > 
ObjectMap
typedef std::vector< Object * > ObjectHeap
typedef std::vector< WebView * > WebMaterialList
typedef
std::tr1::unordered_map
< Transfer::URI, Asset
*, Transfer::URI::Hasher
AssetMap

Protected Member Functions

void iUpdateObject (ProxyObjectPtr p, Liveness::Token lt)
void iRemoveObject (const String &name, Liveness::Token alive)
void iAddObject (Object *r, Liveness::Token alive)
void addObject (Object *r)
ObjectfindObject (const String &sporef)
void removeObject (const String &sporef)
double calculatePriority (ProxyObjectPtr proxy)
void commandGetData (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)
void commandGetStats (const Command::Command &cmd, Command::Commander *cmdr, Command::CommandID cmdid)
void checkShouldLoadNewObject (Object *r)
bool budgetRequiresChange () const
void loadObject (Object *r)
void unloadObject (Object *r)
void requestAssetForObject (Object *)
void downloadAsset (Asset *asset, Object *forObject)
void loadAsset (Transfer::URI asset_uri, uint64 assetId)
void finishLoadAsset (Asset *asset, bool success)
void loadMeshdata (Asset *asset, const Mesh::MeshdataPtr &mdptr, bool usingDefault)
void loadBillboard (Asset *asset, const Mesh::BillboardPtr &bbptr, bool usingDefault)
void loadDependentTextures (Asset *asset, bool usingDefault)
void handleLoadedResource (Asset *asset, Liveness::Token assetAlive)
void updateAssetPriority (Asset *asset)
void unrequestAssetForObject (Object *)
void checkRemoveAsset (Asset *asset, Liveness::Token lt)
void iStop (Liveness::Token dpAlive)
void iPoll (Liveness::Token dpAlive)

Protected Attributes

bool mStopped
PriorityDownloadPlannerMetricPtr mMetric
ObjectMap mObjects
ObjectMap mLoadedObjects
ObjectMap mWaitingObjects
AssetMap mAssets
Transfer::PriorityAggregationAlgorithmmAggregationAlgorithm
bool mActiveCDNArchive
unsigned int mCDNArchive

Detailed Description

Implementation of ResourceDownloadPlanner that orders loading by a priority metric computed on each object.

The priority metric is pluggable and a maximum number of objects can also be enforced.


Member Typedef Documentation

typedef std::tr1::unordered_map<String, Object*> Sirikata::Graphics::PriorityDownloadPlanner::ObjectMap [protected]
typedef std::tr1::unordered_set<String> Sirikata::Graphics::PriorityDownloadPlanner::ObjectSet [protected]

Constructor & Destructor Documentation

Sirikata::Graphics::PriorityDownloadPlanner::PriorityDownloadPlanner ( Context c,
OgreRenderer renderer,
PriorityDownloadPlannerMetricPtr  metric 
)
Sirikata::Graphics::PriorityDownloadPlanner::~PriorityDownloadPlanner ( )

Member Function Documentation

void Sirikata::Graphics::PriorityDownloadPlanner::addNewObject ( Graphics::Entity ent,
const Transfer::URI mesh 
) [virtual]
void Sirikata::Graphics::PriorityDownloadPlanner::addNewObject ( ProxyObjectPtr  p,
Graphics::Entity mesh 
) [virtual]
void Sirikata::Graphics::PriorityDownloadPlanner::addObject ( Object r) [protected]
bool Sirikata::Graphics::PriorityDownloadPlanner::budgetRequiresChange ( ) const [protected]
double Sirikata::Graphics::PriorityDownloadPlanner::calculatePriority ( ProxyObjectPtr  proxy) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::checkRemoveAsset ( Asset asset,
Liveness::Token  lt 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::checkShouldLoadNewObject ( Object r) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::commandGetData ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::commandGetStats ( const Command::Command cmd,
Command::Commander cmdr,
Command::CommandID  cmdid 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::downloadAsset ( Asset asset,
Object forObject 
) [protected]
PriorityDownloadPlanner::Object * Sirikata::Graphics::PriorityDownloadPlanner::findObject ( const String &  sporef) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::finishLoadAsset ( Asset asset,
bool  success 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::handleLoadedResource ( Asset asset,
Liveness::Token  assetAlive 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::iAddObject ( Object r,
Liveness::Token  alive 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::iPoll ( Liveness::Token  dpAlive) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::iRemoveObject ( const String &  name,
Liveness::Token  alive 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::iStop ( Liveness::Token  dpAlive) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::iUpdateObject ( ProxyObjectPtr  p,
Liveness::Token  lt 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::loadAsset ( Transfer::URI  asset_uri,
uint64  assetId 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::loadBillboard ( Asset asset,
const Mesh::BillboardPtr bbptr,
bool  usingDefault 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::loadDependentTextures ( Asset asset,
bool  usingDefault 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::loadMeshdata ( Asset asset,
const Mesh::MeshdataPtr mdptr,
bool  usingDefault 
) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::loadObject ( Object r) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::poll ( ) [virtual]

Override this method to specify the work to be done when polling.

Reimplemented from Sirikata::Graphics::ResourceDownloadPlanner.

References iPoll(), Sirikata::Liveness::livenessToken(), and Sirikata::Graphics::ResourceDownloadPlanner::mDlPlannerMutex.

PriorityDownloadPlannerMetricPtr Sirikata::Graphics::PriorityDownloadPlanner::prioritizationMetric ( ) [inline]
void Sirikata::Graphics::PriorityDownloadPlanner::removeObject ( ProxyObjectPtr  p) [virtual]
void Sirikata::Graphics::PriorityDownloadPlanner::removeObject ( const String &  sporef) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::removeObject ( Graphics::Entity ent) [virtual]
void Sirikata::Graphics::PriorityDownloadPlanner::requestAssetForObject ( Object forObject) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::setPrioritizationMetric ( PriorityDownloadPlannerMetricPtr  metric) [inline]
ResourceDownloadPlanner::Stats Sirikata::Graphics::PriorityDownloadPlanner::stats ( ) [virtual]
void Sirikata::Graphics::PriorityDownloadPlanner::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::Graphics::ResourceDownloadPlanner.

References iStop(), Sirikata::Liveness::livenessToken(), and Sirikata::Graphics::ResourceDownloadPlanner::mDlPlannerMutex.

Referenced by Sirikata::Graphics::OgreRenderer::iStop().

void Sirikata::Graphics::PriorityDownloadPlanner::unloadObject ( Object r) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::unrequestAssetForObject ( Object forObject) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::updateAssetPriority ( Asset asset) [protected]
void Sirikata::Graphics::PriorityDownloadPlanner::updateObject ( ProxyObjectPtr  p) [virtual]

Member Data Documentation


The documentation for this class was generated from the following files: