[EEP] LLMessage Changes

This commit is contained in:
Lirusaito
2019-03-25 00:20:25 -04:00
parent cb295bfabc
commit 059fc7c4fa
10 changed files with 120 additions and 27 deletions

View File

@@ -58,6 +58,42 @@ const LLUUID CATEGORIZE_LOST_AND_FOUND_ID(std::string("00000000-0000-0000-0000-0
const U64 TOXIC_ASSET_LIFETIME = (120 * 1000000); // microseconds const U64 TOXIC_ASSET_LIFETIME = (120 * 1000000); // microseconds
namespace
{
bool operator == (const LLAssetStorage::LLGetAssetCallback &lhs, const LLAssetStorage::LLGetAssetCallback &rhs)
{
auto fnPtrLhs = lhs.target<LLAssetStorage::LLGetAssetCallback>();
auto fnPtrRhs = rhs.target<LLAssetStorage::LLGetAssetCallback>();
if (fnPtrLhs && fnPtrRhs)
return (*fnPtrLhs == *fnPtrRhs);
else if (!fnPtrLhs && !fnPtrRhs)
return true;
return false;
}
// Rider: This is the general case of the operator declared above. The code compares the callback
// passed into the LLAssetStorage functions to determine if there are duplicated requests for an
// asset. Unfortunately std::function does not provide a direct way to compare two variables so
// we define the operator here.
// XCode is not very happy with the variadic temples in use below so we will just define the specific
// case of comparing two LLGetAssetCallback objects since that is all we really use.
//
// template<typename T, typename... U>
// bool operator == (const std::function<T(U...)> &a, const std::function <T(U...)> &b)
// {
// typedef T(fnType)(U...);
//
// auto fnPtrA = a.target<T(*)(U...)>();
// auto fnPtrB = b.target<T(*)(U...)>();
// if (fnPtrA && fnPtrB)
// return (*fnPtrA == *fnPtrB);
// else if (!fnPtrA && !fnPtrB)
// return true;
// return false;
// }
}
///---------------------------------------------------------------------------- ///----------------------------------------------------------------------------
/// LLAssetInfo /// LLAssetInfo
///---------------------------------------------------------------------------- ///----------------------------------------------------------------------------
@@ -150,13 +186,13 @@ void LLAssetInfo::setFromNameValue( const LLNameValue& nv )
} }
///---------------------------------------------------------------------------- ///----------------------------------------------------------------------------
/// LLAssetRequest /// LLBaseDownloadRequest
///---------------------------------------------------------------------------- ///----------------------------------------------------------------------------
LLBaseDownloadRequest::LLBaseDownloadRequest(const LLUUID &uuid, const LLAssetType::EType type) LLBaseDownloadRequest::LLBaseDownloadRequest(const LLUUID &uuid, const LLAssetType::EType type)
: mUUID(uuid), : mUUID(uuid),
mType(type), mType(type),
mDownCallback(NULL), mDownCallback(),
mUserData(NULL), mUserData(NULL),
mHost(), mHost(),
mIsTemp(FALSE), mIsTemp(FALSE),
@@ -173,19 +209,21 @@ LLBaseDownloadRequest::LLBaseDownloadRequest(const LLUUID &uuid, const LLAssetTy
LLBaseDownloadRequest::~LLBaseDownloadRequest() LLBaseDownloadRequest::~LLBaseDownloadRequest()
{ {
} }
// virtual // virtual
LLBaseDownloadRequest* LLBaseDownloadRequest::getCopy() LLBaseDownloadRequest* LLBaseDownloadRequest::getCopy()
{ {
return new LLBaseDownloadRequest(*this); return new LLBaseDownloadRequest(*this);
} }
///---------------------------------------------------------------------------- ///----------------------------------------------------------------------------
/// LLAssetRequest /// LLAssetRequest
///---------------------------------------------------------------------------- ///----------------------------------------------------------------------------
LLAssetRequest::LLAssetRequest(const LLUUID &uuid, const LLAssetType::EType type) LLAssetRequest::LLAssetRequest(const LLUUID &uuid, const LLAssetType::EType type)
: LLBaseDownloadRequest(uuid, type), : LLBaseDownloadRequest(uuid, type),
mUpCallback( NULL ), mUpCallback(),
mInfoCallback( NULL ), mInfoCallback( NULL ),
mIsLocal(FALSE), mIsLocal(FALSE),
mIsUserWaiting(FALSE), mIsUserWaiting(FALSE),
@@ -273,6 +311,7 @@ LLBaseDownloadRequest* LLEstateAssetRequest::getCopy()
return new LLEstateAssetRequest(*this); return new LLEstateAssetRequest(*this);
} }
///---------------------------------------------------------------------------- ///----------------------------------------------------------------------------
/// LLAssetStorage /// LLAssetStorage
///---------------------------------------------------------------------------- ///----------------------------------------------------------------------------
@@ -291,14 +330,12 @@ LLAssetStorage::LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, LLVFS
_init(msg, xfer, vfs, static_vfs, upstream_host); _init(msg, xfer, vfs, static_vfs, upstream_host);
} }
LLAssetStorage::LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer, LLAssetStorage::LLAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
LLVFS *vfs, LLVFS *static_vfs) LLVFS *vfs, LLVFS *static_vfs)
{ {
_init(msg, xfer, vfs, static_vfs, LLHost::invalid); _init(msg, xfer, vfs, static_vfs, LLHost::invalid);
} }
void LLAssetStorage::_init(LLMessageSystem *msg, void LLAssetStorage::_init(LLMessageSystem *msg,
LLXferManager *xfer, LLXferManager *xfer,
LLVFS *vfs, LLVFS *vfs,
@@ -443,7 +480,7 @@ bool LLAssetStorage::findInStaticVFSAndInvokeCallback(const LLUUID& uuid, LLAsse
// IW - uuid is passed by value to avoid side effects, please don't re-add & // IW - uuid is passed by value to avoid side effects, please don't re-add &
void LLAssetStorage::getAssetData(const LLUUID uuid, void LLAssetStorage::getAssetData(const LLUUID uuid,
LLAssetType::EType type, LLAssetType::EType type,
LLGetAssetCallback callback, LLAssetStorage::LLGetAssetCallback callback,
void *user_data, void *user_data,
BOOL is_priority) BOOL is_priority)
{ {
@@ -1305,9 +1342,13 @@ BOOL is_priority)
iter != mPendingDownloads.end(); ) iter != mPendingDownloads.end(); )
{ {
LLAssetRequest* tmp = *iter++; LLAssetRequest* tmp = *iter++;
//void(*const* cbptr)(LLVFS *, const LLUUID &, LLAssetType::EType, void *, S32, LLExtStat)
auto cbptr = tmp->mDownCallback.target<void(*)(LLVFS *, const LLUUID &, LLAssetType::EType, void *, S32, LLExtStat)>();
if (type == tmp->getType() && if (type == tmp->getType() &&
uuid == tmp->getUUID() && uuid == tmp->getUUID() &&
legacyGetDataCallback == tmp->mDownCallback && (cbptr && (*cbptr == legacyGetDataCallback)) &&
callback == ((LLLegacyAssetRequest *)tmp->mUserData)->mDownCallback && callback == ((LLLegacyAssetRequest *)tmp->mUserData)->mDownCallback &&
user_data == ((LLLegacyAssetRequest *)tmp->mUserData)->mUserData) user_data == ((LLLegacyAssetRequest *)tmp->mUserData)->mUserData)
{ {

View File

@@ -29,6 +29,7 @@
#define LL_LLASSETSTORAGE_H #define LL_LLASSETSTORAGE_H
#include <string> #include <string>
#include <functional>
#include "lluuid.h" #include "lluuid.h"
#include "lltimer.h" #include "lltimer.h"
@@ -60,6 +61,14 @@ const int LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE = -4;
const int LL_ERR_INSUFFICIENT_PERMISSIONS = -5; const int LL_ERR_INSUFFICIENT_PERMISSIONS = -5;
const int LL_ERR_PRICE_MISMATCH = -23018; const int LL_ERR_PRICE_MISMATCH = -23018;
// *TODO: these typedefs are passed into the VFS via a legacy C function pointer
// future project would be to convert these to C++ callables (std::function<>) so that
// we can use bind and remove the userData parameter.
//
typedef std::function<void(LLVFS *vfs, const LLUUID &asset_id, LLAssetType::EType asset_type, void *user_data, S32 status, LLExtStat ext_status)> LLGetAssetCallback;
typedef std::function<void(const LLUUID &asset_id, void *user_data, S32 status, LLExtStat ext_status)> LLStoreAssetCallback;
class LLAssetInfo class LLAssetInfo
{ {
protected: protected:
@@ -111,15 +120,13 @@ protected:
LLAssetType::EType mType; LLAssetType::EType mType;
public: public:
void (*mDownCallback)(LLVFS*, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat); LLGetAssetCallback mDownCallback;
// void(*mDownCallback)(LLVFS*, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat);
void *mUserData; void *mUserData;
LLHost mHost; LLHost mHost;
BOOL mIsTemp; BOOL mIsTemp;
F64Seconds mTime; // Message system time F64Seconds mTime; // Message system time
BOOL mIsPriority; BOOL mIsPriority;
BOOL mDataSentInFirstPacket; BOOL mDataSentInFirstPacket;
BOOL mDataIsInVFS; BOOL mDataIsInVFS;
@@ -135,7 +142,8 @@ public:
virtual LLBaseDownloadRequest* getCopy(); virtual LLBaseDownloadRequest* getCopy();
void (*mUpCallback)(const LLUUID&, void *, S32, LLExtStat); LLStoreAssetCallback mUpCallback;
// void (*mUpCallback)(const LLUUID&, void *, S32, LLExtStat);
void (*mInfoCallback)(LLAssetInfo *, void *, S32); void (*mInfoCallback)(LLAssetInfo *, void *, S32);
BOOL mIsLocal; BOOL mIsLocal;
@@ -185,8 +193,6 @@ protected:
// Map of known bad assets // Map of known bad assets
typedef std::map<LLUUID,U64,lluuid_less> toxic_asset_map_t; typedef std::map<LLUUID,U64,lluuid_less> toxic_asset_map_t;
typedef void (*LLGetAssetCallback)(LLVFS *vfs, const LLUUID &asset_id,
LLAssetType::EType asset_type, void *user_data, S32 status, LLExtStat ext_status);
class LLAssetStorage class LLAssetStorage
@@ -195,7 +201,8 @@ public:
// VFS member is public because static child methods need it :( // VFS member is public because static child methods need it :(
LLVFS *mVFS; LLVFS *mVFS;
LLVFS *mStaticVFS; LLVFS *mStaticVFS;
typedef void (*LLStoreAssetCallback)(const LLUUID &asset_id, void *user_data, S32 status, LLExtStat ext_status); typedef ::LLStoreAssetCallback LLStoreAssetCallback;
typedef ::LLGetAssetCallback LLGetAssetCallback;
enum ERequestType enum ERequestType
{ {
@@ -240,7 +247,6 @@ public:
// public interface methods // public interface methods
// note that your callback may get called BEFORE the function returns // note that your callback may get called BEFORE the function returns
void getAssetData(const LLUUID uuid, LLAssetType::EType atype, LLGetAssetCallback cb, void *user_data, BOOL is_priority = FALSE); void getAssetData(const LLUUID uuid, LLAssetType::EType atype, LLGetAssetCallback cb, void *user_data, BOOL is_priority = FALSE);
std::vector<LLUUID> mBlackListedAsset; std::vector<LLUUID> mBlackListedAsset;
@@ -382,8 +388,8 @@ protected:
void _cleanupRequests(BOOL all, S32 error); void _cleanupRequests(BOOL all, S32 error);
void _callUploadCallbacks(const LLUUID &uuid, const LLAssetType::EType asset_type, BOOL success, LLExtStat ext_status); void _callUploadCallbacks(const LLUUID &uuid, const LLAssetType::EType asset_type, BOOL success, LLExtStat ext_status);
virtual void _queueDataRequest(const LLUUID& uuid, LLAssetType::EType type, virtual void _queueDataRequest(const LLUUID& uuid, LLAssetType::EType type, LLGetAssetCallback callback,
void (*callback)(LLVFS *vfs, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat), // void (*callback)(LLVFS *vfs, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat),
void *user_data, BOOL duplicate, void *user_data, BOOL duplicate,
BOOL is_priority) = 0; BOOL is_priority) = 0;
@@ -429,7 +435,7 @@ class LLLegacyAssetRequest
{ {
public: public:
void (*mDownCallback)(const char *, const LLUUID&, void *, S32, LLExtStat); void (*mDownCallback)(const char *, const LLUUID&, void *, S32, LLExtStat);
LLAssetStorage::LLStoreAssetCallback mUpCallback; LLStoreAssetCallback mUpCallback;
void *mUserData; void *mUserData;
}; };

View File

@@ -544,7 +544,7 @@ void LLCircuitData::checkPeriodTime()
mBytesOutLastPeriod = mBytesOutThisPeriod; mBytesOutLastPeriod = mBytesOutThisPeriod;
mBytesInThisPeriod = S32Bytes(0); mBytesInThisPeriod = S32Bytes(0);
mBytesOutThisPeriod = S32Bytes(0); mBytesOutThisPeriod = S32Bytes(0);
mLastPeriodLength = period_length; mLastPeriodLength = F32Seconds::convert(period_length);
mPeriodTime = mt_sec; mPeriodTime = mt_sec;
} }
@@ -1390,8 +1390,8 @@ F32Milliseconds LLCircuitData::getPingInTransitTime()
if (mPingsInTransit) if (mPingsInTransit)
{ {
time_since_ping_was_sent = ((mPingsInTransit*mHeartbeatInterval - F32Seconds(1)) time_since_ping_was_sent = F32Milliseconds::convert(((mPingsInTransit*mHeartbeatInterval - F32Seconds(1))
+ (LLMessageSystem::getMessageTimeSeconds() - mPingTime)); + (LLMessageSystem::getMessageTimeSeconds() - mPingTime)));
} }
return time_since_ping_was_sent; return time_since_ping_was_sent;

View File

@@ -29,6 +29,7 @@
#include "lldispatcher.h" #include "lldispatcher.h"
#include <algorithm> #include <algorithm>
#include <iterator>
#include "llstl.h" #include "llstl.h"
#include "message.h" #include "message.h"
@@ -145,3 +146,25 @@ bool LLDispatcher::unpackMessage(
} }
return true; return true;
} }
// static
bool LLDispatcher::unpackLargeMessage(
LLMessageSystem* msg,
LLDispatcher::key_t& method,
LLUUID& invoice,
LLDispatcher::sparam_t& parameters)
{
msg->getStringFast(_PREHASH_MethodData, _PREHASH_Method, method);
msg->getUUIDFast(_PREHASH_MethodData, _PREHASH_Invoice, invoice);
S32 count = msg->getNumberOfBlocksFast(_PREHASH_ParamList);
for (S32 i = 0; i < count; ++i)
{
// This method treats all Parameter List params as strings and unpacks
// them regardless of length. If there is binary data it is the callers
// responsibility to decode it.
std::string param;
msg->getStringFast(_PREHASH_ParamList, _PREHASH_Parameter, param, i);
parameters.push_back(param);
}
return true;
}

View File

@@ -105,6 +105,12 @@ public:
LLUUID& invoice, LLUUID& invoice,
sparam_t& parameters); sparam_t& parameters);
static bool unpackLargeMessage(
LLMessageSystem* msg,
key_t& method,
LLUUID& invoice,
sparam_t& parameters);
protected: protected:
typedef std::map<key_t, LLDispatchHandler*> dispatch_map_t; typedef std::map<key_t, LLDispatchHandler*> dispatch_map_t;
dispatch_map_t mHandlers; dispatch_map_t mHandlers;

View File

@@ -42,6 +42,9 @@ const U64 REGION_FLAGS_RESET_HOME_ON_TELEPORT = (1 << 3);
// Does the sun move? // Does the sun move?
const U64 REGION_FLAGS_SUN_FIXED = (1 << 4); const U64 REGION_FLAGS_SUN_FIXED = (1 << 4);
// Does the estate owner allow private parcels?
const U64 REGION_FLAGS_ALLOW_ACCESS_OVERRIDE = (1 << 5);
// Can't change the terrain heightfield, even on owned parcels, // Can't change the terrain heightfield, even on owned parcels,
// but can plant trees and grass. // but can plant trees and grass.
const U64 REGION_FLAGS_BLOCK_TERRAFORM = (1 << 6); const U64 REGION_FLAGS_BLOCK_TERRAFORM = (1 << 6);
@@ -51,6 +54,9 @@ const U64 REGION_FLAGS_BLOCK_LAND_RESELL = (1 << 7);
// All content wiped once per night // All content wiped once per night
const U64 REGION_FLAGS_SANDBOX = (1 << 8); const U64 REGION_FLAGS_SANDBOX = (1 << 8);
const U64 REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE = (1 << 9);
const U64 REGION_FLAGS_GAMING = (1 << 10); // Denotes a gaming region on certain grids const U64 REGION_FLAGS_GAMING = (1 << 10); // Denotes a gaming region on certain grids
const U64 REGION_FLAGS_HIDE_FROM_SEARCH = (1 << 11); // Hides region from search on certain grids const U64 REGION_FLAGS_HIDE_FROM_SEARCH = (1 << 11); // Hides region from search on certain grids
const U64 REGION_FLAGS_SKIP_COLLISIONS = (1 << 12); // Pin all non agent rigid bodies const U64 REGION_FLAGS_SKIP_COLLISIONS = (1 << 12); // Pin all non agent rigid bodies

View File

@@ -618,6 +618,7 @@ char const* const _PREHASH_GroupAccountSummaryRequest = LLMessageStringTable::ge
char const* const _PREHASH_GroupVoteHistoryRequest = LLMessageStringTable::getInstance()->getString("GroupVoteHistoryRequest"); char const* const _PREHASH_GroupVoteHistoryRequest = LLMessageStringTable::getInstance()->getString("GroupVoteHistoryRequest");
char const* const _PREHASH_ParamValue = LLMessageStringTable::getInstance()->getString("ParamValue"); char const* const _PREHASH_ParamValue = LLMessageStringTable::getInstance()->getString("ParamValue");
char const* const _PREHASH_MaxAgents = LLMessageStringTable::getInstance()->getString("MaxAgents"); char const* const _PREHASH_MaxAgents = LLMessageStringTable::getInstance()->getString("MaxAgents");
char const* const _PREHASH_HardMaxAgents = LLMessageStringTable::getInstance()->getString("HardMaxAgents");
char const* const _PREHASH_CreateNewOutfitAttachments = LLMessageStringTable::getInstance()->getString("CreateNewOutfitAttachments"); char const* const _PREHASH_CreateNewOutfitAttachments = LLMessageStringTable::getInstance()->getString("CreateNewOutfitAttachments");
char const* const _PREHASH_RegionHandle = LLMessageStringTable::getInstance()->getString("RegionHandle"); char const* const _PREHASH_RegionHandle = LLMessageStringTable::getInstance()->getString("RegionHandle");
char const* const _PREHASH_TeleportProgress = LLMessageStringTable::getInstance()->getString("TeleportProgress"); char const* const _PREHASH_TeleportProgress = LLMessageStringTable::getInstance()->getString("TeleportProgress");
@@ -1374,6 +1375,11 @@ char const* const _PREHASH_OwnerMask = LLMessageStringTable::getInstance()->getS
char const* const _PREHASH_TransferInventoryAck = LLMessageStringTable::getInstance()->getString("TransferInventoryAck"); char const* const _PREHASH_TransferInventoryAck = LLMessageStringTable::getInstance()->getString("TransferInventoryAck");
char const* const _PREHASH_RegionDenyAgeUnverified = LLMessageStringTable::getInstance()->getString("RegionDenyAgeUnverified"); char const* const _PREHASH_RegionDenyAgeUnverified = LLMessageStringTable::getInstance()->getString("RegionDenyAgeUnverified");
char const* const _PREHASH_AgeVerificationBlock = LLMessageStringTable::getInstance()->getString("AgeVerificationBlock"); char const* const _PREHASH_AgeVerificationBlock = LLMessageStringTable::getInstance()->getString("AgeVerificationBlock");
char const* const _PREHASH_RegionAllowAccessBlock = LLMessageStringTable::getInstance()->getString("RegionAllowAccessBlock");
char const* const _PREHASH_RegionAllowAccessOverride = LLMessageStringTable::getInstance()->getString("RegionAllowAccessOverride");
char const* const _PREHASH_ParcelEnvironmentBlock = LLMessageStringTable::getInstance()->getString("ParcelEnvironmentBlock");
char const* const _PREHASH_ParcelEnvironmentVersion = LLMessageStringTable::getInstance()->getString("ParcelEnvironmentVersion");
char const* const _PREHASH_RegionAllowEnvironmentOverride = LLMessageStringTable::getInstance()->getString("RegionAllowEnvironmentOverride");
char const* const _PREHASH_UCoord = LLMessageStringTable::getInstance()->getString("UCoord"); char const* const _PREHASH_UCoord = LLMessageStringTable::getInstance()->getString("UCoord");
char const* const _PREHASH_VCoord = LLMessageStringTable::getInstance()->getString("VCoord"); char const* const _PREHASH_VCoord = LLMessageStringTable::getInstance()->getString("VCoord");
char const* const _PREHASH_FaceIndex = LLMessageStringTable::getInstance()->getString("FaceIndex"); char const* const _PREHASH_FaceIndex = LLMessageStringTable::getInstance()->getString("FaceIndex");

View File

@@ -618,6 +618,7 @@ extern char const* const _PREHASH_GroupAccountSummaryRequest;
extern char const* const _PREHASH_GroupVoteHistoryRequest; extern char const* const _PREHASH_GroupVoteHistoryRequest;
extern char const* const _PREHASH_ParamValue; extern char const* const _PREHASH_ParamValue;
extern char const* const _PREHASH_MaxAgents; extern char const* const _PREHASH_MaxAgents;
extern char const* const _PREHASH_HardMaxAgents;
extern char const* const _PREHASH_CreateNewOutfitAttachments; extern char const* const _PREHASH_CreateNewOutfitAttachments;
extern char const* const _PREHASH_RegionHandle; extern char const* const _PREHASH_RegionHandle;
extern char const* const _PREHASH_TeleportProgress; extern char const* const _PREHASH_TeleportProgress;
@@ -1374,6 +1375,11 @@ extern char const* const _PREHASH_OwnerMask;
extern char const* const _PREHASH_TransferInventoryAck; extern char const* const _PREHASH_TransferInventoryAck;
extern char const* const _PREHASH_RegionDenyAgeUnverified; extern char const* const _PREHASH_RegionDenyAgeUnverified;
extern char const* const _PREHASH_AgeVerificationBlock; extern char const* const _PREHASH_AgeVerificationBlock;
extern char const* const _PREHASH_RegionAllowAccessBlock;
extern char const* const _PREHASH_RegionAllowAccessOverride;
extern char const* const _PREHASH_ParcelEnvironmentBlock;
extern char const* const _PREHASH_ParcelEnvironmentVersion;
extern char const* const _PREHASH_RegionAllowEnvironmentOverride;
extern char const* const _PREHASH_UCoord; extern char const* const _PREHASH_UCoord;
extern char const* const _PREHASH_VCoord; extern char const* const _PREHASH_VCoord;
extern char const* const _PREHASH_FaceIndex; extern char const* const _PREHASH_FaceIndex;

View File

@@ -1545,7 +1545,7 @@ void LLSnapshotLivePreview::saveTextureDone(LLUUID const& asset_id, void* user_d
// Call the default call back. // Call the default call back.
LLAssetStorage::LLStoreAssetCallback asset_callback = temporary ? &temp_upload_callback : &upload_done_callback; LLAssetStorage::LLStoreAssetCallback asset_callback = temporary ? &temp_upload_callback : &upload_done_callback;
(*asset_callback)(asset_id, user_data, status, ext_status); asset_callback(asset_id, user_data, status, ext_status);
} }
// This callback used when the capability NewFileAgentInventory is available and it wasn't a temporary. // This callback used when the capability NewFileAgentInventory is available and it wasn't a temporary.

View File

@@ -66,18 +66,17 @@ public:
F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT); F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT);
protected: protected:
// virtual // virtual
void _queueDataRequest(const LLUUID& uuid, void _queueDataRequest(const LLUUID& uuid,
LLAssetType::EType type, LLAssetType::EType type,
void (*callback) (LLVFS *vfs, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat), LLGetAssetCallback callback,
void *user_data, void *user_data,
BOOL duplicate, BOOL duplicate,
BOOL is_priority); BOOL is_priority);
void queueRequestUDP(const LLUUID& uuid, void queueRequestUDP(const LLUUID& uuid,
LLAssetType::EType type, LLAssetType::EType type,
void (*callback) (LLVFS *vfs, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat), LLGetAssetCallback callback,
void *user_data, void *user_data,
BOOL duplicate, BOOL duplicate,
BOOL is_priority); BOOL is_priority);
@@ -87,7 +86,7 @@ protected:
void assetRequestCoro(LLViewerAssetRequest *req, void assetRequestCoro(LLViewerAssetRequest *req,
const LLUUID uuid, const LLUUID uuid,
LLAssetType::EType atype, LLAssetType::EType atype,
void (*callback) (LLVFS *vfs, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat), LLGetAssetCallback callback,
void *user_data); void *user_data);
std::string getAssetURL(const std::string& cap_url, const LLUUID& uuid, LLAssetType::EType atype); std::string getAssetURL(const std::string& cap_url, const LLUUID& uuid, LLAssetType::EType atype);