merge
commit
c5e338f240
|
|
@ -283,28 +283,30 @@ LLEstateAssetRequest::~LLEstateAssetRequest()
|
|||
// TODO: rework tempfile handling?
|
||||
|
||||
|
||||
LLAssetStorage::LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, LLVFS *vfs, const LLHost &upstream_host)
|
||||
LLAssetStorage::LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, LLVFS *vfs, LLVFS *static_vfs, const LLHost &upstream_host)
|
||||
{
|
||||
_init(msg, xfer, vfs, upstream_host);
|
||||
_init(msg, xfer, vfs, static_vfs, upstream_host);
|
||||
}
|
||||
|
||||
|
||||
LLAssetStorage::LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs)
|
||||
LLVFS *vfs, LLVFS *static_vfs)
|
||||
{
|
||||
_init(msg, xfer, vfs, LLHost::invalid);
|
||||
_init(msg, xfer, vfs, static_vfs, LLHost::invalid);
|
||||
}
|
||||
|
||||
|
||||
void LLAssetStorage::_init(LLMessageSystem *msg,
|
||||
LLXferManager *xfer,
|
||||
LLVFS *vfs,
|
||||
LLVFS *static_vfs,
|
||||
const LLHost &upstream_host)
|
||||
{
|
||||
mShutDown = FALSE;
|
||||
mMessageSys = msg;
|
||||
mXferManager = xfer;
|
||||
mVFS = vfs;
|
||||
mStaticVFS = static_vfs;
|
||||
|
||||
setUpstream(upstream_host);
|
||||
msg->setHandlerFuncFast(_PREHASH_AssetUploadComplete, processUploadComplete, (void **)this);
|
||||
|
|
@ -396,7 +398,36 @@ void LLAssetStorage::_cleanupRequests(BOOL all, S32 error)
|
|||
|
||||
BOOL LLAssetStorage::hasLocalAsset(const LLUUID &uuid, const LLAssetType::EType type)
|
||||
{
|
||||
return mVFS->getExists(uuid, type);
|
||||
return mStaticVFS->getExists(uuid, type) || mVFS->getExists(uuid, type);
|
||||
}
|
||||
|
||||
bool LLAssetStorage::findInVFSAndInvokeCallback(LLVFS *vfs, const LLUUID& uuid, LLAssetType::EType type,
|
||||
LLGetAssetCallback callback, void *user_data)
|
||||
{
|
||||
// Try in static VFS first.
|
||||
BOOL exists = vfs->getExists(uuid, type);
|
||||
if (exists)
|
||||
{
|
||||
LLVFile file(vfs, uuid, type);
|
||||
U32 size = exists ? file.getSize() : 0;
|
||||
if (size>0)
|
||||
{
|
||||
// we've already got the file
|
||||
// theoretically, partial files w/o a pending request shouldn't happen
|
||||
// unless there's a weird error
|
||||
if (callback)
|
||||
{
|
||||
callback(vfs, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "Asset vfile " << uuid << ":" << type
|
||||
<< " found with bad size " << file.getSize() << ", ignoring" << llendl;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -404,7 +435,7 @@ BOOL LLAssetStorage::hasLocalAsset(const LLUUID &uuid, const LLAssetType::EType
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// IW - uuid is passed by value to avoid side effects, please don't re-add &
|
||||
void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, void (*callback)(LLVFS *vfs, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat), void *user_data, BOOL is_priority)
|
||||
void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LLGetAssetCallback callback, void *user_data, BOOL is_priority)
|
||||
{
|
||||
lldebugs << "LLAssetStorage::getAssetData() - " << uuid << "," << LLAssetType::lookup(type) << llendl;
|
||||
|
||||
|
|
@ -425,11 +456,27 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, vo
|
|||
return;
|
||||
}
|
||||
|
||||
// Try static VFS first.
|
||||
if (findInVFSAndInvokeCallback(mStaticVFS,uuid,type,callback,user_data))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL exists = mVFS->getExists(uuid, type);
|
||||
LLVFile file(mVFS, uuid, type);
|
||||
U32 size = exists ? file.getSize() : 0;
|
||||
|
||||
if (size < 1)
|
||||
if (size > 0)
|
||||
{
|
||||
// we've already got the file
|
||||
// theoretically, partial files w/o a pending request shouldn't happen
|
||||
// unless there's a weird error
|
||||
if (callback)
|
||||
{
|
||||
callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (exists)
|
||||
{
|
||||
|
|
@ -468,18 +515,8 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, vo
|
|||
// This can be overridden by subclasses
|
||||
_queueDataRequest(uuid, type, callback, user_data, duplicate, is_priority);
|
||||
}
|
||||
else
|
||||
{
|
||||
// we've already got the file
|
||||
// theoretically, partial files w/o a pending request shouldn't happen
|
||||
// unless there's a weird error
|
||||
llinfos << "ASSET_TRACE asset " << uuid << " found in VFS" << llendl;
|
||||
|
||||
if (callback)
|
||||
{
|
||||
callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLAssetStorage::_queueDataRequest(const LLUUID& uuid, LLAssetType::EType atype,
|
||||
|
|
@ -622,11 +659,27 @@ void LLAssetStorage::getEstateAsset(const LLHost &object_sim, const LLUUID &agen
|
|||
return;
|
||||
}
|
||||
|
||||
// Try static VFS first.
|
||||
if (findInVFSAndInvokeCallback(mStaticVFS,asset_id,atype,callback,user_data))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL exists = mVFS->getExists(asset_id, atype);
|
||||
LLVFile file(mVFS, asset_id, atype);
|
||||
U32 size = exists ? file.getSize() : 0;
|
||||
|
||||
if (size < 1)
|
||||
if (size > 0)
|
||||
{
|
||||
// we've already got the file
|
||||
// theoretically, partial files w/o a pending request shouldn't happen
|
||||
// unless there's a weird error
|
||||
if (callback)
|
||||
{
|
||||
callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (exists)
|
||||
{
|
||||
|
|
@ -677,16 +730,6 @@ void LLAssetStorage::getEstateAsset(const LLHost &object_sim, const LLUUID &agen
|
|||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// we've already got the file
|
||||
// theoretically, partial files w/o a pending request shouldn't happen
|
||||
// unless there's a weird error
|
||||
if (callback)
|
||||
{
|
||||
callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLAssetStorage::downloadEstateAssetCompleteCallback(
|
||||
|
|
@ -753,6 +796,12 @@ void LLAssetStorage::getInvItemAsset(const LLHost &object_sim, const LLUUID &age
|
|||
|
||||
if(asset_id.notNull())
|
||||
{
|
||||
// Try static VFS first.
|
||||
if (findInVFSAndInvokeCallback(mStaticVFS, asset_id, atype, callback, user_data))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
exists = mVFS->getExists(asset_id, atype);
|
||||
LLVFile file(mVFS, asset_id, atype);
|
||||
size = exists ? file.getSize() : 0;
|
||||
|
|
@ -764,7 +813,17 @@ void LLAssetStorage::getInvItemAsset(const LLHost &object_sim, const LLUUID &age
|
|||
|
||||
}
|
||||
|
||||
if (size < 1)
|
||||
if (size > 0)
|
||||
{
|
||||
// we've already got the file
|
||||
// theoretically, partial files w/o a pending request shouldn't happen
|
||||
// unless there's a weird error
|
||||
if (callback)
|
||||
{
|
||||
callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// See whether we should talk to the object's originating sim,
|
||||
// or the upstream provider.
|
||||
|
|
@ -813,16 +872,6 @@ void LLAssetStorage::getInvItemAsset(const LLHost &object_sim, const LLUUID &age
|
|||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// we've already got the file
|
||||
// theoretically, partial files w/o a pending request shouldn't happen
|
||||
// unless there's a weird error
|
||||
if (callback)
|
||||
{
|
||||
callback(mVFS, asset_id, atype, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -218,6 +218,7 @@ class LLAssetStorage : public LLTempAssetStorage
|
|||
public:
|
||||
// VFS member is public because static child methods need it :(
|
||||
LLVFS *mVFS;
|
||||
LLVFS *mStaticVFS;
|
||||
typedef void (*LLStoreAssetCallback)(const LLUUID &asset_id, void *user_data, S32 status, LLExtStat ext_status);
|
||||
|
||||
enum ERequestType
|
||||
|
|
@ -247,16 +248,19 @@ protected:
|
|||
|
||||
public:
|
||||
LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs, const LLHost &upstream_host);
|
||||
LLVFS *vfs, LLVFS *static_vfs, const LLHost &upstream_host);
|
||||
|
||||
LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs);
|
||||
LLVFS *vfs, LLVFS *static_vfs);
|
||||
virtual ~LLAssetStorage();
|
||||
|
||||
void setUpstream(const LLHost &upstream_host);
|
||||
|
||||
virtual BOOL hasLocalAsset(const LLUUID &uuid, LLAssetType::EType type);
|
||||
|
||||
bool findInVFSAndInvokeCallback(LLVFS *vfs, const LLUUID& uuid, LLAssetType::EType type,
|
||||
LLGetAssetCallback callback, void *user_data);
|
||||
|
||||
// public interface methods
|
||||
// note that your callback may get called BEFORE the function returns
|
||||
|
||||
|
|
@ -442,6 +446,7 @@ private:
|
|||
void _init(LLMessageSystem *msg,
|
||||
LLXferManager *xfer,
|
||||
LLVFS *vfs,
|
||||
LLVFS *static_vfs,
|
||||
const LLHost &upstream_host);
|
||||
|
||||
protected:
|
||||
|
|
|
|||
|
|
@ -401,21 +401,23 @@ size_t LLHTTPAssetRequest::curlCompressedUploadCallback(
|
|||
|
||||
|
||||
LLHTTPAssetStorage::LLHTTPAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs, const LLHost &upstream_host,
|
||||
LLVFS *vfs, LLVFS *static_vfs,
|
||||
const LLHost &upstream_host,
|
||||
const std::string& web_host,
|
||||
const std::string& local_web_host,
|
||||
const std::string& host_name)
|
||||
: LLAssetStorage(msg, xfer, vfs, upstream_host)
|
||||
: LLAssetStorage(msg, xfer, vfs, static_vfs, upstream_host)
|
||||
{
|
||||
_init(web_host, local_web_host, host_name);
|
||||
}
|
||||
|
||||
LLHTTPAssetStorage::LLHTTPAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs,
|
||||
LLVFS *static_vfs,
|
||||
const std::string& web_host,
|
||||
const std::string& local_web_host,
|
||||
const std::string& host_name)
|
||||
: LLAssetStorage(msg, xfer, vfs)
|
||||
: LLAssetStorage(msg, xfer, vfs, static_vfs)
|
||||
{
|
||||
_init(web_host, local_web_host, host_name);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,13 +48,14 @@ class LLHTTPAssetStorage : public LLAssetStorage
|
|||
{
|
||||
public:
|
||||
LLHTTPAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs, const LLHost &upstream_host,
|
||||
LLVFS *vfs, LLVFS *static_vfs,
|
||||
const LLHost &upstream_host,
|
||||
const std::string& web_host,
|
||||
const std::string& local_web_host,
|
||||
const std::string& host_name);
|
||||
|
||||
LLHTTPAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs,
|
||||
LLVFS *vfs, LLVFS *static_vfs,
|
||||
const std::string& web_host,
|
||||
const std::string& local_web_host,
|
||||
const std::string& host_name);
|
||||
|
|
|
|||
|
|
@ -3242,6 +3242,13 @@ bool LLAppViewer::initCache()
|
|||
else
|
||||
{
|
||||
LLVFile::initClass();
|
||||
|
||||
llinfos << "Static VFS listing" << llendl;
|
||||
gStaticVFS->listFiles();
|
||||
|
||||
llinfos << "regular VFS listing" << llendl;
|
||||
gVFS->listFiles();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -564,7 +564,7 @@ bool idle_startup()
|
|||
gXferManager->setUseAckThrottling(TRUE);
|
||||
gXferManager->setAckThrottleBPS(xfer_throttle_bps);
|
||||
}
|
||||
gAssetStorage = new LLViewerAssetStorage(msg, gXferManager, gVFS);
|
||||
gAssetStorage = new LLViewerAssetStorage(msg, gXferManager, gVFS, gStaticVFS);
|
||||
|
||||
|
||||
F32 dropPercent = gSavedSettings.getF32("PacketDropPercentage");
|
||||
|
|
|
|||
|
|
@ -41,15 +41,16 @@
|
|||
#include "llagent.h"
|
||||
|
||||
LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs, const LLHost &upstream_host)
|
||||
: LLAssetStorage(msg, xfer, vfs, upstream_host)
|
||||
LLVFS *vfs, LLVFS *static_vfs,
|
||||
const LLHost &upstream_host)
|
||||
: LLAssetStorage(msg, xfer, vfs, static_vfs, upstream_host)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs)
|
||||
: LLAssetStorage(msg, xfer, vfs)
|
||||
LLVFS *vfs, LLVFS *static_vfs)
|
||||
: LLAssetStorage(msg, xfer, vfs, static_vfs)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,10 +42,10 @@ class LLViewerAssetStorage : public LLAssetStorage
|
|||
{
|
||||
public:
|
||||
LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs, const LLHost &upstream_host);
|
||||
LLVFS *vfs, LLVFS *static_vfs, const LLHost &upstream_host);
|
||||
|
||||
LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
|
||||
LLVFS *vfs);
|
||||
LLVFS *vfs, LLVFS *static_vfs);
|
||||
|
||||
using LLAssetStorage::storeAssetData;
|
||||
virtual void storeAssetData(
|
||||
|
|
|
|||
Loading…
Reference in New Issue