summaryrefslogtreecommitdiff
path: root/indra/llcommon
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2017-02-14 09:31:08 -0500
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2017-02-14 09:31:08 -0500
commit86449a0ac4cb1432a55c17bfabe83c4c42c096a8 (patch)
treeeb68305d6a32e2e4ff23a2ce72fff75a0cf7e4ee /indra/llcommon
parent5db5f6148aad0f5e561012f0ec9d1a62b8e54a19 (diff)
SL-409 - debug setting to enable/disable use of ViewerAsset cap by asset type. Temporary construction until UDP path goes away.
Diffstat (limited to 'indra/llcommon')
-rw-r--r--indra/llcommon/llassettype.cpp93
-rw-r--r--indra/llcommon/llassettype.h5
2 files changed, 97 insertions, 1 deletions
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
index 4304db36be..6ecc2ec740 100644
--- a/indra/llcommon/llassettype.cpp
+++ b/indra/llcommon/llassettype.cpp
@@ -31,6 +31,9 @@
#include "llmemory.h"
#include "llsingleton.h"
+#include <set>
+#include <boost/algorithm/string.hpp>
+
///----------------------------------------------------------------------------
/// Class LLAssetType
///----------------------------------------------------------------------------
@@ -48,7 +51,8 @@ struct AssetEntry : public LLDictionaryEntry
mHumanName(human_name),
mCanLink(can_link),
mCanFetch(can_fetch),
- mCanKnow(can_know)
+ mCanKnow(can_know),
+ mFetchWithVACap(false)
{
llassert(strlen(mTypeName) <= 8);
}
@@ -58,6 +62,7 @@ struct AssetEntry : public LLDictionaryEntry
bool mCanLink;
bool mCanFetch;
bool mCanKnow;
+ bool mFetchWithVACap;
};
class LLAssetDictionary : public LLSingleton<LLAssetDictionary>,
@@ -251,3 +256,89 @@ bool LLAssetType::lookupIsAssetIDKnowable(EType asset_type)
}
return false;
}
+
+// static
+bool LLAssetType::lookupFetchWithVACap(EType asset_type)
+{
+ LLAssetDictionary *dict = LLAssetDictionary::getInstance();
+ const AssetEntry *entry = dict->lookup(asset_type);
+ if (entry)
+ {
+ return entry->mFetchWithVACap;
+ }
+ return false;
+}
+
+// FIXME asset-http yank all this after asset-http becomes universal
+void LLAssetType::setFetchWithVACapTypeString(const std::string& type_string)
+{
+ LLAssetDictionary *dict = LLAssetDictionary::getInstance();
+ if (type_string=="none")
+ {
+ for (LLAssetDictionary::iterator iter = dict->begin();
+ iter != dict->end();
+ iter++)
+ {
+ AssetEntry *entry = iter->second;
+ entry->mFetchWithVACap = false;
+ }
+ }
+ else if (type_string=="all")
+ {
+ for (LLAssetDictionary::iterator iter = dict->begin();
+ iter != dict->end();
+ iter++)
+ {
+ AssetEntry *entry = iter->second;
+ entry->mFetchWithVACap = true;
+ }
+ }
+ else
+ {
+ for (LLAssetDictionary::iterator iter = dict->begin();
+ iter != dict->end();
+ iter++)
+ {
+ AssetEntry *entry = iter->second;
+ if (entry->mTypeName==type_string)
+ {
+ entry->mFetchWithVACap = true;
+ }
+ }
+ }
+}
+
+// FIXME asset-http yank all this after asset-http becomes universal
+void LLAssetType::setFetchWithVACapConfigString(const std::string& config_string)
+{
+ // Clear any currently enabled types
+ LLAssetType::setFetchWithVACapTypeString("none");
+
+ // Enable all types specified in the config string.
+ std::set<std::string> type_names_for_va_cap;
+ boost::split(type_names_for_va_cap, config_string, boost::is_any_of(" :,"));
+ for (std::set<std::string>::const_iterator it = type_names_for_va_cap.begin();
+ it != type_names_for_va_cap.end(); ++it)
+ {
+ const std::string& type_string = *it;
+ LLAssetType::setFetchWithVACapTypeString(type_string);
+ }
+
+ LLAssetDictionary *dict = LLAssetDictionary::getInstance();
+ bool any_found = false;
+ for (LLAssetDictionary::iterator iter = dict->begin();
+ iter != dict->end();
+ iter++)
+ {
+ AssetEntry *entry = iter->second;
+ if (entry->mFetchWithVACap)
+ {
+ any_found = true;
+ LL_WARNS() << "Fetch with ViewerAsset cap enabled for " << entry->mTypeName << LL_ENDL;
+ }
+ }
+ if (!any_found)
+ {
+ LL_WARNS() << "Fetch with ViewerAsset cap disabled for all types" << LL_ENDL;
+ }
+}
diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h
index 3a4b5dad18..e06ebc2a35 100644
--- a/indra/llcommon/llassettype.h
+++ b/indra/llcommon/llassettype.h
@@ -152,6 +152,11 @@ public:
static bool lookupIsAssetFetchByIDAllowed(EType asset_type); // the asset allows direct download
static bool lookupIsAssetIDKnowable(EType asset_type); // asset data can be known by the viewer
+
+ static bool lookupFetchWithVACap(EType asset_type); // asset data is fetched via http using ViewerAsset cap.
+
+ static void setFetchWithVACapTypeString(const std::string& type_string);
+ static void setFetchWithVACapConfigString(const std::string& config_string);
static const std::string& badLookup(); // error string when a lookup fails