summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerassetstorage.h
diff options
context:
space:
mode:
authorCallum Prentice <callum@lindenlab.com>2021-04-29 13:45:15 -0700
committerCallum Prentice <callum@lindenlab.com>2021-04-29 13:45:15 -0700
commit99b99a1b4a21758ef888b251d8f8bbf565f8b42e (patch)
tree5c91eaa4a6dffd724cdb0cb8f4de8c11f82335a5 /indra/newview/llviewerassetstorage.h
parent0df59ff9e6e50237d36a976731e81c6e37e73933 (diff)
parentce65bc2f13409d75dbc6502c970030cc5ed2e5ad (diff)
Clean up a merge conflict
Diffstat (limited to 'indra/newview/llviewerassetstorage.h')
-rw-r--r--indra/newview/llviewerassetstorage.h46
1 files changed, 37 insertions, 9 deletions
diff --git a/indra/newview/llviewerassetstorage.h b/indra/newview/llviewerassetstorage.h
index 972c89de34..af7fbb5fbf 100644
--- a/indra/newview/llviewerassetstorage.h
+++ b/indra/newview/llviewerassetstorage.h
@@ -43,7 +43,7 @@ public:
~LLViewerAssetStorage();
- virtual void storeAssetData(
+ void storeAssetData(
const LLTransactionID& tid,
LLAssetType::EType atype,
LLStoreAssetCallback callback,
@@ -52,9 +52,9 @@ public:
bool is_priority = false,
bool store_local = false,
bool user_waiting=FALSE,
- F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT);
-
- virtual void storeAssetData(
+ F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT) override;
+
+ void storeAssetData(
const std::string& filename,
const LLTransactionID& tid,
LLAssetType::EType type,
@@ -63,16 +63,17 @@ public:
bool temp_file = false,
bool is_priority = false,
bool user_waiting=FALSE,
- F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT);
+ F64Seconds timeout=LL_ASSET_STORAGE_TIMEOUT) override;
+
+ void checkForTimeouts() override;
protected:
- // virtual
void _queueDataRequest(const LLUUID& uuid,
LLAssetType::EType type,
LLGetAssetCallback callback,
void *user_data,
BOOL duplicate,
- BOOL is_priority);
+ BOOL is_priority) override;
void queueRequestHttp(const LLUUID& uuid,
LLAssetType::EType type,
@@ -91,8 +92,35 @@ protected:
std::string getAssetURL(const std::string& cap_url, const LLUUID& uuid, LLAssetType::EType atype);
- void logAssetStorageInfo();
-
+ void logAssetStorageInfo() override;
+
+ // Asset storage works through coroutines and coroutines have limited queue capacity
+ // This class is meant to temporary store requests when fiber's queue is full
+ class CoroWaitList
+ {
+ public:
+ CoroWaitList(LLViewerAssetRequest *req,
+ const LLUUID& uuid,
+ LLAssetType::EType atype,
+ LLGetAssetCallback &callback,
+ void *user_data)
+ : mRequest(req),
+ mId(uuid),
+ mType(atype),
+ mCallback(callback),
+ mUserData(user_data)
+ {
+ }
+
+ LLViewerAssetRequest* mRequest;
+ LLUUID mId;
+ LLAssetType::EType mType;
+ LLGetAssetCallback mCallback;
+ void *mUserData;
+ };
+ typedef std::list<CoroWaitList> wait_list_t;
+ wait_list_t mCoroWaitList;
+
std::string mViewerAssetUrl;
S32 mAssetCoroCount;
S32 mCountRequests;