Sirikata
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
Sirikata::AssetDownloadTask Class Reference

An AssetDownloadTask manages the full download of an asset, including dependencies. More...

#include <AssetDownloadTask.hpp>

Inheritance diagram for Sirikata::AssetDownloadTask:
Collaboration diagram for Sirikata::AssetDownloadTask:

List of all members.

Classes

struct  ResourceData

Public Types

typedef std::tr1::function< void()> FinishedCallback
typedef std::map
< Transfer::URI, ResourceData
Dependencies
typedef std::map< const String,
Transfer::ResourceDownloadTaskPtr
ActiveDownloadMap

Public Member Functions

 ~AssetDownloadTask ()
Mesh::VisualPtr asset () const
const Dependenciesdependencies () const
float64 priority () const
void getDownloadTasks (std::vector< String > &finishedDownloads, std::vector< String > &activeDownloads)
void updatePriority (float64 priority)
void cancel ()
ActiveDownloadMap::size_type getOutstandingDependentDownloads ()

Static Public Member Functions

static std::tr1::shared_ptr
< AssetDownloadTask
construct (const Transfer::URI &uri, Graphics::OgreRenderer *const scene, double priority, FinishedCallback cb)
static std::tr1::shared_ptr
< AssetDownloadTask
construct (const Transfer::URI &uri, Graphics::OgreRenderer *const scene, double priority, bool isAgg, FinishedCallback cb)

Private Member Functions

 AssetDownloadTask (const Transfer::URI &uri, Graphics::OgreRenderer *const scene, double priority, bool isAgg, FinishedCallback cb)
void downloadAssetFile ()
void assetFileDownloaded (Transfer::ResourceDownloadTaskPtr taskptr, Transfer::ChunkRequestPtr request, Transfer::DenseDataPtr response)
void handleAssetParsed (Mesh::VisualPtr md)
void addDependentDownload (Transfer::ResourceDownloadTaskPtr resPtr)
void addDependentDownload (const Transfer::URI &depUrl)
void addDependentDownload (const Transfer::URI &depUrl, const Transfer::Chunk &depChunk)
void startDependentDownloads ()
void textureDownloaded (Transfer::URI uri, Transfer::ResourceDownloadTaskPtr taskptr, Transfer::TransferRequestPtr request, Transfer::DenseDataPtr response)
void failDownload ()
void cancelNoLock ()
Transfer::URI getURL (const Transfer::URI &orig, const String &given_url)

Static Private Member Functions

static void weakAssetFileDownloaded (std::tr1::weak_ptr< AssetDownloadTask > thus, Transfer::ResourceDownloadTaskPtr taskptr, Transfer::TransferRequestPtr request, Transfer::DenseDataPtr response)
static void weakHandleAssetParsed (std::tr1::weak_ptr< AssetDownloadTask > thus, Mesh::VisualPtr md)
static void weakTextureDownloaded (const std::tr1::weak_ptr< AssetDownloadTask > &, Transfer::URI uri, Transfer::ResourceDownloadTaskPtr taskptr, Transfer::TransferRequestPtr request, Transfer::DenseDataPtr response)

Private Attributes

Graphics::OgreRenderer *const mScene
Transfer::URI mAssetURI
double mPriority
FinishedCallback mCB
Graphics::ParseMeshTaskHandle mParseMeshHandle
Mesh::VisualPtr mAsset
Dependencies mDependencies
bool mIsAggregate
ActiveDownloadMap mActiveDownloads
std::vector< String > mFinishedDownloads
boost::mutex mDependentDownloadMutex

Detailed Description

An AssetDownloadTask manages the full download of an asset, including dependencies.

It builds upon the basic functionality of ResourceDownloadTask.

Eventually this class should handle progressive downloads, letting you know when some minimum loadable unit is available, and then providing additional callbacks as more data becomes available. Currently, it just manages downloading all dependencies and notifying you when the are complete.


Member Typedef Documentation

typedef std::tr1::function<void()> Sirikata::AssetDownloadTask::FinishedCallback

Constructor & Destructor Documentation

Sirikata::AssetDownloadTask::AssetDownloadTask ( const Transfer::URI uri,
Graphics::OgreRenderer *const  scene,
double  priority,
bool  isAgg,
FinishedCallback  cb 
) [private]
Sirikata::AssetDownloadTask::~AssetDownloadTask ( )

References cancel().


Member Function Documentation

void Sirikata::AssetDownloadTask::addDependentDownload ( Transfer::ResourceDownloadTaskPtr  resPtr) [private]
void Sirikata::AssetDownloadTask::addDependentDownload ( const Transfer::URI depUrl,
const Transfer::Chunk depChunk 
) [private]
void Sirikata::AssetDownloadTask::addDependentDownload ( const Transfer::URI depUrl) [private]
Mesh::VisualPtr Sirikata::AssetDownloadTask::asset ( ) const [inline]

References mAsset.

void Sirikata::AssetDownloadTask::assetFileDownloaded ( Transfer::ResourceDownloadTaskPtr  taskptr,
Transfer::ChunkRequestPtr  request,
Transfer::DenseDataPtr  response 
) [private]
void Sirikata::AssetDownloadTask::cancel ( )
void Sirikata::AssetDownloadTask::cancelNoLock ( ) [private]

References mActiveDownloads, and mParseMeshHandle.

Referenced by cancel(), and failDownload().

std::tr1::shared_ptr< AssetDownloadTask > Sirikata::AssetDownloadTask::construct ( const Transfer::URI uri,
Graphics::OgreRenderer *const  scene,
double  priority,
bool  isAgg,
FinishedCallback  cb 
) [static]
std::tr1::shared_ptr< AssetDownloadTask > Sirikata::AssetDownloadTask::construct ( const Transfer::URI uri,
Graphics::OgreRenderer *const  scene,
double  priority,
FinishedCallback  cb 
) [static]
const Dependencies& Sirikata::AssetDownloadTask::dependencies ( ) const [inline]

References mDependencies.

void Sirikata::AssetDownloadTask::downloadAssetFile ( ) [private]
void Sirikata::AssetDownloadTask::failDownload ( ) [private]

References cancelNoLock(), mAsset, and mCB.

Referenced by assetFileDownloaded(), and textureDownloaded().

void Sirikata::AssetDownloadTask::getDownloadTasks ( std::vector< String > &  finishedDownloads,
std::vector< String > &  activeDownloads 
)
AssetDownloadTask::ActiveDownloadMap::size_type Sirikata::AssetDownloadTask::getOutstandingDependentDownloads ( )

References mActiveDownloads.

Transfer::URI Sirikata::AssetDownloadTask::getURL ( const Transfer::URI orig,
const String &  given_url 
) [private]
void Sirikata::AssetDownloadTask::handleAssetParsed ( Mesh::VisualPtr  md) [private]
float64 Sirikata::AssetDownloadTask::priority ( ) const [inline]

References mPriority.

Referenced by updatePriority().

void Sirikata::AssetDownloadTask::startDependentDownloads ( ) [private]
void Sirikata::AssetDownloadTask::textureDownloaded ( Transfer::URI  uri,
Transfer::ResourceDownloadTaskPtr  taskptr,
Transfer::TransferRequestPtr  request,
Transfer::DenseDataPtr  response 
) [private]
void Sirikata::AssetDownloadTask::updatePriority ( float64  priority)
void Sirikata::AssetDownloadTask::weakAssetFileDownloaded ( std::tr1::weak_ptr< AssetDownloadTask thus,
Transfer::ResourceDownloadTaskPtr  taskptr,
Transfer::TransferRequestPtr  request,
Transfer::DenseDataPtr  response 
) [static, private]

Referenced by downloadAssetFile().

void Sirikata::AssetDownloadTask::weakHandleAssetParsed ( std::tr1::weak_ptr< AssetDownloadTask thus,
Mesh::VisualPtr  md 
) [static, private]

Referenced by assetFileDownloaded().

void Sirikata::AssetDownloadTask::weakTextureDownloaded ( const std::tr1::weak_ptr< AssetDownloadTask > &  thus,
Transfer::URI  uri,
Transfer::ResourceDownloadTaskPtr  taskptr,
Transfer::TransferRequestPtr  request,
Transfer::DenseDataPtr  response 
) [static, private]

Referenced by addDependentDownload().


Member Data Documentation

Referenced by dependencies(), and textureDownloaded().

std::vector<String> Sirikata::AssetDownloadTask::mFinishedDownloads [private]

Referenced by assetFileDownloaded().


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