diff options
| author | Rider Linden <rider@lindenlab.com> | 2015-09-03 16:14:40 -0700 | 
|---|---|---|
| committer | Rider Linden <rider@lindenlab.com> | 2015-09-03 16:14:40 -0700 | 
| commit | ec998b4c6efee0ddba48481dfba630e18c53a29c (patch) | |
| tree | 85a6179d3d4dd13abe0dd71e071b6c38502bf1b4 /indra/llmessage | |
| parent | e0c27db16771ebcc95111595acea192fd52e5e02 (diff) | |
Region experience allow/disallow.
Diffstat (limited to 'indra/llmessage')
| -rw-r--r-- | indra/llmessage/llexperiencecache.cpp | 47 | ||||
| -rw-r--r-- | indra/llmessage/llexperiencecache.h | 7 | 
2 files changed, 53 insertions, 1 deletions
| diff --git a/indra/llmessage/llexperiencecache.cpp b/indra/llmessage/llexperiencecache.cpp index 233b15dcdd..af0bae0228 100644 --- a/indra/llmessage/llexperiencecache.cpp +++ b/indra/llmessage/llexperiencecache.cpp @@ -657,6 +657,7 @@ void LLExperienceCache::getGroupExperiencesCoro(LLCoreHttpUtil::HttpCoroutineAda      if (url.empty())      {          LL_WARNS("ExperienceCache") << "No Group Experiences capability" << LL_ENDL; +        return;      }      url += "?" + groupId.asString(); @@ -676,6 +677,52 @@ void LLExperienceCache::getGroupExperiencesCoro(LLCoreHttpUtil::HttpCoroutineAda      fn(experienceIds);  } +//------------------------------------------------------------------------- +void LLExperienceCache::getRegionExperiences(CapabilityQuery_t regioncaps, ExperienceGetFn_t fn) +{ +    LLCoprocedureManager::getInstance()->enqueueCoprocedure("ExpCache", "Region Experiences", +        boost::bind(&LLExperienceCache::regionExperiencesCoro, this, _1, regioncaps, false, LLSD(), fn)); +} + +void LLExperienceCache::setRegionExperiences(CapabilityQuery_t regioncaps, const LLSD &experiences, ExperienceGetFn_t fn) +{ +    LLCoprocedureManager::getInstance()->enqueueCoprocedure("ExpCache", "Region Experiences", +        boost::bind(&LLExperienceCache::regionExperiencesCoro, this, _1, regioncaps, true, experiences, fn)); +} + +void LLExperienceCache::regionExperiencesCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &httpAdapter, +    CapabilityQuery_t regioncaps, bool update, LLSD experiences, ExperienceGetFn_t fn) +{ +    LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest()); + +    // search for experiences owned by the current group +    std::string url = regioncaps("RegionExperiences"); +    if (url.empty()) +    { +        LL_WARNS("ExperienceCache") << "No Region Experiences capability" << LL_ENDL; +        return; +    } + +    LLSD result; +    if (update) +        result = httpAdapter->postAndYield(httpRequest, url, experiences); +    else +        result = httpAdapter->getAndYield(httpRequest, url); + +    LLSD httpResults = result[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]; +    LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(httpResults); + +    if (!status) +    { +//      fn(LLSD()); +        return; +    } + +    result.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS); +    fn(result); + +} +  //=========================================================================  void LLExperienceCacheImpl::mapKeys(const LLSD& legacyKeys)  { diff --git a/indra/llmessage/llexperiencecache.h b/indra/llmessage/llexperiencecache.h index 76cbbb6ed6..3e3ae538f9 100644 --- a/indra/llmessage/llexperiencecache.h +++ b/indra/llmessage/llexperiencecache.h @@ -67,6 +67,11 @@ public:      void findExperienceByName(const std::string text, int page, ExperienceGetFn_t fn);      void getGroupExperiences(const LLUUID &groupId, ExperienceGetFn_t fn); +    // the Get/Set Region Experiences take a CapabilityQuery to get the capability since  +    // the region being queried may not be the region that the agent is standing on. +    void getRegionExperiences(CapabilityQuery_t regioncaps, ExperienceGetFn_t fn); +    void setRegionExperiences(CapabilityQuery_t regioncaps, const LLSD &experiences, ExperienceGetFn_t fn); +      //-------------------------------------------      static const std::string NAME;			// "name"      static const std::string EXPERIENCE_ID;	// "public_id" @@ -139,7 +144,7 @@ private:      void fetchAssociatedExperienceCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &, LLUUID, LLUUID, ExperienceGetFn_t);      void findExperienceByNameCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &, std::string, int, ExperienceGetFn_t);      void getGroupExperiencesCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &, LLUUID , ExperienceGetFn_t); - +    void regionExperiencesCoro(LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &httpAdapter, CapabilityQuery_t regioncaps, bool update, LLSD experiences, ExperienceGetFn_t fn);      void bootstrap(const LLSD& legacyKeys, int initialExpiration);      void exportFile(std::ostream& ostr) const;      void importFile(std::istream& istr); | 
