diff options
| author | andreykproductengine <akleshchev@productengine.com> | 2015-07-01 14:40:05 +0300 | 
|---|---|---|
| committer | andreykproductengine <akleshchev@productengine.com> | 2015-07-01 14:40:05 +0300 | 
| commit | 79ffc6569b8b0f4656c61f86b18e3bde22eb6dd5 (patch) | |
| tree | aa47a0b1f3f086ae884990107014ede35745fdd8 /indra/newview/llexperienceassociationresponder.cpp | |
| parent | 51aaed86dee3b45fa96fc7b4e8c1b9486c880b3b (diff) | |
| parent | 4aa64b99dbe6cafdccf0c25501feaef5ba3445c4 (diff) | |
Merge from viewer-relese and become version 3.8.1
Diffstat (limited to 'indra/newview/llexperienceassociationresponder.cpp')
| -rw-r--r-- | indra/newview/llexperienceassociationresponder.cpp | 97 | 
1 files changed, 97 insertions, 0 deletions
| diff --git a/indra/newview/llexperienceassociationresponder.cpp b/indra/newview/llexperienceassociationresponder.cpp new file mode 100644 index 0000000000..b50c81eedc --- /dev/null +++ b/indra/newview/llexperienceassociationresponder.cpp @@ -0,0 +1,97 @@ +/**  + * @file llexperienceassociationresponder.cpp + * @brief llexperienceassociationresponder implementation. This class combines  + * a lookup for a script association and an experience details request. The first + * is always async, but the second may be cached locally. + * + * $LicenseInfo:firstyear=2013&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2013, Linden Research, Inc. + *  + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + *  + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * Lesser General Public License for more details. + *  + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA + *  + * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA + * $/LicenseInfo$ + */ + +#include "llviewerprecompiledheaders.h" +#include "llexperienceassociationresponder.h" +#include "llexperiencecache.h" +#include "llviewerregion.h" +#include "llagent.h" + +ExperienceAssociationResponder::ExperienceAssociationResponder(ExperienceAssociationResponder::callback_t callback):mCallback(callback) +{ +    ref(); +} + +void ExperienceAssociationResponder::fetchAssociatedExperience( const LLUUID& object_id, const LLUUID& item_id, callback_t callback ) +{ +    LLSD request; +    request["object-id"]=object_id; +    request["item-id"]=item_id; +    fetchAssociatedExperience(request, callback); +} + +void ExperienceAssociationResponder::fetchAssociatedExperience(LLSD& request, callback_t callback) +{ +    LLViewerRegion* region = gAgent.getRegion(); +    if (region) +    { +        std::string lookup_url=region->getCapability("GetMetadata");  +        if(!lookup_url.empty()) +        { +            LLSD fields; +            fields.append("experience"); +            request["fields"] = fields; +            LLHTTPClient::post(lookup_url, request, new ExperienceAssociationResponder(callback)); +        } +    } +} + +void ExperienceAssociationResponder::httpFailure() +{ +    LLSD msg; +    msg["error"]=(LLSD::Integer)getStatus(); +    msg["message"]=getReason(); +    LL_INFOS("ExperienceAssociation") << "Failed to look up associated experience: " << getStatus() << ": " << getReason() << LL_ENDL; + +    sendResult(msg); +   +} +void ExperienceAssociationResponder::httpSuccess() +{ +    if(!getContent().has("experience")) +    { + +        LLSD msg; +        msg["message"]="no experience"; +        msg["error"]=-1; +        sendResult(msg); +        return; +    } + +    LLExperienceCache::get(getContent()["experience"].asUUID(), boost::bind(&ExperienceAssociationResponder::sendResult, this, _1)); + +} + +void ExperienceAssociationResponder::sendResult( const LLSD& experience ) +{ +    mCallback(experience); +    unref(); +} + + + | 
