Sirikata
|
An AssetDownloadTask manages the full download of an asset, including dependencies. More...
#include <AssetDownloadTask.hpp>
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.
typedef std::map<const String, Transfer::ResourceDownloadTaskPtr> Sirikata::AssetDownloadTask::ActiveDownloadMap |
typedef std::map<Transfer::URI, ResourceData> Sirikata::AssetDownloadTask::Dependencies |
typedef std::tr1::function<void()> Sirikata::AssetDownloadTask::FinishedCallback |
Sirikata::AssetDownloadTask::AssetDownloadTask | ( | const Transfer::URI & | uri, |
Graphics::OgreRenderer *const | scene, | ||
double | priority, | ||
bool | isAgg, | ||
FinishedCallback | cb | ||
) | [private] |
Sirikata::AssetDownloadTask::~AssetDownloadTask | ( | ) |
References cancel().
void Sirikata::AssetDownloadTask::addDependentDownload | ( | Transfer::ResourceDownloadTaskPtr | resPtr | ) | [private] |
References mActiveDownloads, and mDependentDownloadMutex.
Referenced by addDependentDownload(), and handleAssetParsed().
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 | ( | ) |
References cancelNoLock(), and mDependentDownloadMutex.
Referenced by ~AssetDownloadTask().
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] |
References Sirikata::SelfWeakPtr< AssetDownloadTask >::construct(), Sirikata::Transfer::URI::empty(), Sirikata::SelfWeakPtr< AssetDownloadTask >::getWeakPtr(), mActiveDownloads, mAssetURI, mDependentDownloadMutex, mPriority, mScene, Sirikata::Graphics::OgreRenderer::transferPool(), and weakAssetFileDownloaded().
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 | ||
) |
References mActiveDownloads, and mFinishedDownloads.
AssetDownloadTask::ActiveDownloadMap::size_type Sirikata::AssetDownloadTask::getOutstandingDependentDownloads | ( | ) |
References mActiveDownloads.
Transfer::URI Sirikata::AssetDownloadTask::getURL | ( | const Transfer::URI & | orig, |
const String & | given_url | ||
) | [private] |
References Sirikata::Transfer::URL::context(), and Sirikata::Transfer::URL::empty().
Referenced by handleAssetParsed().
void Sirikata::AssetDownloadTask::handleAssetParsed | ( | Mesh::VisualPtr | md | ) | [private] |
float64 Sirikata::AssetDownloadTask::priority | ( | ) | const [inline] |
References mPriority.
Referenced by updatePriority().
void Sirikata::AssetDownloadTask::startDependentDownloads | ( | ) | [private] |
References mActiveDownloads, and mDependentDownloadMutex.
Referenced by handleAssetParsed().
void Sirikata::AssetDownloadTask::textureDownloaded | ( | Transfer::URI | uri, |
Transfer::ResourceDownloadTaskPtr | taskptr, | ||
Transfer::TransferRequestPtr | request, | ||
Transfer::DenseDataPtr | response | ||
) | [private] |
References failDownload(), mActiveDownloads, mCB, mDependencies, mDependentDownloadMutex, mFinishedDownloads, SILOG, and Sirikata::Logging::warn.
void Sirikata::AssetDownloadTask::updatePriority | ( | float64 | priority | ) |
References mActiveDownloads, mDependentDownloadMutex, mPriority, and 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().
Referenced by asset(), failDownload(), and handleAssetParsed().
Referenced by downloadAssetFile(), and handleAssetParsed().
Referenced by failDownload(), handleAssetParsed(), and textureDownloaded().
Referenced by dependencies(), and textureDownloaded().
boost::mutex Sirikata::AssetDownloadTask::mDependentDownloadMutex [private] |
std::vector<String> Sirikata::AssetDownloadTask::mFinishedDownloads [private] |
Referenced by assetFileDownloaded(), getDownloadTasks(), and textureDownloaded().
bool Sirikata::AssetDownloadTask::mIsAggregate [private] |
Referenced by assetFileDownloaded().
Referenced by assetFileDownloaded(), and cancelNoLock().
double Sirikata::AssetDownloadTask::mPriority [private] |
Referenced by addDependentDownload(), downloadAssetFile(), priority(), and updatePriority().
Graphics::OgreRenderer* const Sirikata::AssetDownloadTask::mScene [private] |
Referenced by addDependentDownload(), assetFileDownloaded(), and downloadAssetFile().