From d331db79c2a1f07f9919703677b44d4664c36509 Mon Sep 17 00:00:00 2001 From: dolphin Date: Wed, 7 May 2014 16:48:45 -0700 Subject: Build>Scripts>Recompile Scripts now will skip Experience scripts that the agent can not contribute to and will keep Experience association otherwise. --- indra/newview/llcompilequeue.cpp | 152 ++++++++++++++++++++++++++++++++------- 1 file changed, 125 insertions(+), 27 deletions(-) (limited to 'indra/newview/llcompilequeue.cpp') diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index b0916d769a..9e554ba0eb 100755 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -59,6 +59,8 @@ #include "lltrans.h" #include "llselectmgr.h" +#include "llexperienceassociationresponder.h" +#include "llexperiencecache.h" // *TODO: This should be separated into the script queue, and the floater views of that queue. // There should only be one floater class that can view any queue type @@ -70,11 +72,13 @@ struct LLScriptQueueData { LLUUID mQueueID; - std::string mScriptName; LLUUID mTaskId; - LLUUID mItemId; - LLScriptQueueData(const LLUUID& q_id, const std::string& name, const LLUUID& task_id, const LLUUID& item_id) : - mQueueID(q_id), mScriptName(name), mTaskId(task_id), mItemId(item_id) {} + LLPointer mItem; + LLHost mHost; + LLUUID mExperienceId; + std::string mExperiencename; + LLScriptQueueData(const LLUUID& q_id, const LLUUID& task_id, LLInventoryItem* item) : + mQueueID(q_id), mTaskId(task_id), mItem(new LLInventoryItem(item)) {} }; @@ -88,6 +92,7 @@ LLFloaterScriptQueue::LLFloaterScriptQueue(const LLSD& key) : mDone(false), mMono(false) { + } // Destroys the object @@ -167,7 +172,7 @@ BOOL LLFloaterScriptQueue::start() getChild("queue output")->addSimpleElement(buffer, ADD_BOTTOM); - return nextObject(); + return startQueue(); } BOOL LLFloaterScriptQueue::isDone() const @@ -232,6 +237,40 @@ BOOL LLFloaterScriptQueue::popNext() return rv; } +BOOL LLFloaterScriptQueue::startQueue() +{ + return nextObject(); +} + +class CompileQueueExperienceResponder : public LLHTTPClient::Responder +{ +public: + CompileQueueExperienceResponder(const LLUUID& parent):mParent(parent) + { + } + + LLUUID mParent; + + virtual void result(const LLSD& content) + { + sendResult(content); + } + virtual void error(U32 status, const std::string& reason) + { + sendResult(LLSD()); + } + void sendResult(const LLSD& content) + { + LLFloaterCompileQueue* queue = LLFloaterReg::findTypedInstance("compile_queue", mParent); + if(!queue) + return; + + queue->experienceIdsReceived(content["experience_ids"]); + } +}; + + + ///---------------------------------------------------------------------------- /// Class LLFloaterCompileQueue @@ -284,6 +323,21 @@ LLFloaterCompileQueue::~LLFloaterCompileQueue() { } +void LLFloaterCompileQueue::experienceIdsReceived( const LLSD& content ) +{ + for(LLSD::array_const_iterator it = content.beginArray(); it != content.endArray(); ++it) + { + mExperienceIds.insert(it->asUUID()); + } + nextObject(); +} + +BOOL LLFloaterCompileQueue::hasExperience( const LLUUID& id ) const +{ + return mExperienceIds.find(id) != mExperienceIds.end(); +} + + void LLFloaterCompileQueue::handleInventory(LLViewerObject *viewer_object, LLInventoryObject::object_list_t* inv) { @@ -324,25 +378,52 @@ void LLFloaterCompileQueue::handleInventory(LLViewerObject *viewer_object, { LLInventoryItem *itemp = iter->second; LLScriptQueueData* datap = new LLScriptQueueData(getKey().asUUID(), - itemp->getName(), - viewer_object->getID(), - itemp->getUUID()); - - //LL_INFOS() << "ITEM NAME 2: " << names.get(i) << LL_ENDL; - gAssetStorage->getInvItemAsset(viewer_object->getRegion()->getHost(), - gAgent.getID(), - gAgent.getSessionID(), - itemp->getPermissions().getOwner(), - viewer_object->getID(), - itemp->getUUID(), - itemp->getAssetUUID(), - itemp->getType(), - LLFloaterCompileQueue::scriptArrived, - (void*)datap); + viewer_object->getID(), itemp); + + ExperienceAssociationResponder::fetchAssociatedExperience(itemp->getParentUUID(), itemp->getUUID(), + boost::bind(LLFloaterCompileQueue::requestAsset, datap, _1)); + } + } +} + + +void LLFloaterCompileQueue::requestAsset( LLScriptQueueData* datap, const LLSD& experience ) +{ + LLFloaterCompileQueue* queue = LLFloaterReg::findTypedInstance("compile_queue", datap->mQueueID); + if(!queue) + { + delete datap; + return; + } + if(experience.has(LLExperienceCache::EXPERIENCE_ID)) + { + datap->mExperienceId=experience[LLExperienceCache::EXPERIENCE_ID].asUUID(); + if(!queue->hasExperience(datap->mExperienceId)) + { + std::string buffer = LLTrans::getString("CompileNoExperiencePerm", LLSD::emptyMap() + .with("SCRIPT", datap->mItem->getName()) + .with("EXPERIENCE", experience[LLExperienceCache::NAME].asString())); + + queue->getChild("queue output")->addSimpleElement(buffer, ADD_BOTTOM); + queue->removeItemByItemID(datap->mItem->getUUID()); + delete datap; + return; } } + //LL_INFOS() << "ITEM NAME 2: " << names.get(i) << LL_ENDL; + gAssetStorage->getInvItemAsset(datap->mHost, + gAgent.getID(), + gAgent.getSessionID(), + datap->mItem->getPermissions().getOwner(), + datap->mTaskId, + datap->mItem->getUUID(), + datap->mItem->getAssetUUID(), + datap->mItem->getType(), + LLFloaterCompileQueue::scriptArrived, + (void*)datap); } + // This is the callback for when each script arrives // static void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, @@ -382,12 +463,12 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, file.read(script_data, script_size); queue->mUploadQueue->queue(filename, data->mTaskId, - data->mItemId, is_running, queue->mMono, queue->getKey().asUUID(), - script_data, script_size, data->mScriptName); + data->mItem->getUUID(), is_running, queue->mMono, queue->getKey().asUUID(), + script_data, script_size, data->mItem->getName(), data->mExperienceId); } else { - buffer = LLTrans::getString("CompileQueueServiceUnavailable") + (": ") + data->mScriptName; + buffer = LLTrans::getString("CompileQueueServiceUnavailable") + (": ") + data->mItem->getName(); } } } @@ -399,7 +480,7 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound"); LLNotificationsUtil::add("SystemMessage", args); - buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName; + buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mItem->getName(); } else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status) { @@ -407,15 +488,15 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, args["MESSAGE"] = LLTrans::getString("CompileQueueInsufficientPermDownload"); LLNotificationsUtil::add("SystemMessage", args); - buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName; + buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mItem->getName(); } else { - buffer = LLTrans::getString("CompileQueueUnknownFailure") + (" ") + data->mScriptName; + buffer = LLTrans::getString("CompileQueueUnknownFailure") + (" ") + data->mItem->getName(); } LL_WARNS() << "Problem downloading script asset." << LL_ENDL; - if(queue) queue->removeItemByItemID(data->mItemId); + if(queue) queue->removeItemByItemID(data->mItem->getUUID()); } if(queue && (buffer.size() > 0)) { @@ -564,6 +645,23 @@ void LLFloaterCompileQueue::removeItemByItemID(const LLUUID& asset_id) } } +BOOL LLFloaterCompileQueue::startQueue() +{ + LLViewerRegion* region = gAgent.getRegion(); + if (region) + { + std::string lookup_url=region->getCapability("GetCreatorExperiences"); + if(!lookup_url.empty()) + { + LLHTTPClient::get(lookup_url, new CompileQueueExperienceResponder(getKey().asUUID())); + return TRUE; + } + } + return nextObject(); +} + + + void LLFloaterNotRunQueue::handleInventory(LLViewerObject* viewer_obj, LLInventoryObject::object_list_t* inv) { -- cgit v1.3 From 200788c344f5449f99eacc9167ac15c7e6262b69 Mon Sep 17 00:00:00 2001 From: Cho Date: Tue, 24 Jun 2014 22:43:23 +0100 Subject: Updated all experience responders for LLCurl::Responder interface changes for ACME-1535 and ACME-1536 --- indra/llmessage/llexperiencecache.cpp | 4 ++-- indra/newview/llcompilequeue.cpp | 6 +++--- indra/newview/llexperienceassociationresponder.cpp | 14 +++++++------- indra/newview/llexperienceassociationresponder.h | 4 ++-- indra/newview/llfloaterexperienceprofile.cpp | 18 +++++++++--------- indra/newview/llfloaterexperiences.cpp | 2 +- indra/newview/llfloaterregioninfo.cpp | 2 +- indra/newview/llpanelexperiencepicker.cpp | 2 +- indra/newview/llpanelgroupexperiences.cpp | 2 +- indra/newview/llpreviewscript.cpp | 2 +- 10 files changed, 28 insertions(+), 28 deletions(-) (limited to 'indra/newview/llcompilequeue.cpp') diff --git a/indra/llmessage/llexperiencecache.cpp b/indra/llmessage/llexperiencecache.cpp index 1fb77c4391..52b60a176e 100644 --- a/indra/llmessage/llexperiencecache.cpp +++ b/indra/llmessage/llexperiencecache.cpp @@ -257,7 +257,7 @@ namespace LLExperienceCache LLSDSerialize::toPrettyXML(data, ostr); } - class LLExperienceResponder : public LLCurl::Responder + class LLExperienceResponder : public LLHTTPClient::Responder { public: LLExperienceResponder(const ask_queue_t& keys) @@ -266,7 +266,7 @@ namespace LLExperienceCache } - /*virtual*/ void httpSuccess() + /*virtual*/ void httpCompleted() { LLSD experiences = getContent()["experience_keys"]; LLSD::array_const_iterator it = experiences.beginArray(); diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index 9e554ba0eb..d9fd4509a5 100755 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -251,11 +251,11 @@ public: LLUUID mParent; - virtual void result(const LLSD& content) + /*virtual*/ void httpSuccess() { - sendResult(content); + sendResult(getContent()); } - virtual void error(U32 status, const std::string& reason) + /*virtual*/ void httpFailure() { sendResult(LLSD()); } diff --git a/indra/newview/llexperienceassociationresponder.cpp b/indra/newview/llexperienceassociationresponder.cpp index 33ada4906d..b50c81eedc 100644 --- a/indra/newview/llexperienceassociationresponder.cpp +++ b/indra/newview/llexperienceassociationresponder.cpp @@ -61,19 +61,19 @@ void ExperienceAssociationResponder::fetchAssociatedExperience(LLSD& request, ca } } -void ExperienceAssociationResponder::error( U32 status, const std::string& reason ) +void ExperienceAssociationResponder::httpFailure() { LLSD msg; - msg["error"]=(LLSD::Integer)status; - msg["message"]=reason; - LL_INFOS("ExperienceAssociation") << "Failed to look up associated experience: " << status << ": " << reason << LL_ENDL; + 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::result( const LLSD& content ) +void ExperienceAssociationResponder::httpSuccess() { - if(!content.has("experience")) + if(!getContent().has("experience")) { LLSD msg; @@ -83,7 +83,7 @@ void ExperienceAssociationResponder::result( const LLSD& content ) return; } - LLExperienceCache::get(content["experience"].asUUID(), boost::bind(&ExperienceAssociationResponder::sendResult, this, _1)); + LLExperienceCache::get(getContent()["experience"].asUUID(), boost::bind(&ExperienceAssociationResponder::sendResult, this, _1)); } diff --git a/indra/newview/llexperienceassociationresponder.h b/indra/newview/llexperienceassociationresponder.h index 8ff62a3dbc..2bdc3d251b 100644 --- a/indra/newview/llexperienceassociationresponder.h +++ b/indra/newview/llexperienceassociationresponder.h @@ -41,8 +41,8 @@ public: ExperienceAssociationResponder(callback_t callback); - virtual void result(const LLSD& content); - virtual void error(U32 status, const std::string& reason); + /*virtual*/ void httpSuccess(); + /*virtual*/ void httpFailure(); static void fetchAssociatedExperience(const LLUUID& object_it, const LLUUID& item_id, callback_t callback); diff --git a/indra/newview/llfloaterexperienceprofile.cpp b/indra/newview/llfloaterexperienceprofile.cpp index f80fdd9cfe..764d9088a1 100644 --- a/indra/newview/llfloaterexperienceprofile.cpp +++ b/indra/newview/llfloaterexperienceprofile.cpp @@ -138,9 +138,9 @@ public: HandleResponder(const LLHandle& parent):mParent(parent){} LLHandle mParent; - virtual void error(U32 status, const std::string& reason) + virtual void httpFailure() { - LL_WARNS() << "HandleResponder failed with code: " << status<< ", reason: " << reason << LL_ENDL; + LL_WARNS() << "HandleResponder failed with code: " << getStatus() << ", reason: " << getReason() << LL_ENDL; } }; @@ -151,12 +151,12 @@ public: { } - virtual void result(const LLSD& content) + virtual void httpSuccess() { LLFloaterExperienceProfile* parent=mParent.get(); if(parent) { - parent->onSaveComplete(content); + parent->onSaveComplete(getContent()); } } }; @@ -225,14 +225,14 @@ public: } - virtual void result(const LLSD& content) + virtual void httpSuccess() { if(mId.notNull()) { - post(getPermission(content)); + post(getPermission(getContent())); return; } - LLEventPumps::instance().obtain("experience_permission").post(content); + LLEventPumps::instance().obtain("experience_permission").post(getContent()); } void post( const char* perm ) @@ -257,7 +257,7 @@ public: { } - virtual void result(const LLSD& content) + virtual void httpSuccess() { LLFloaterExperienceProfile* parent = mParent.get(); if(!parent) @@ -275,7 +275,7 @@ public: if(url.empty()) enabled = false; } - if(enabled && content["status"].asBoolean()) + if(enabled && getContent()["status"].asBoolean()) { parent->getChild(PNL_TOP)->setVisible(TRUE); parent->getChild(BTN_EDIT)->setVisible(TRUE); diff --git a/indra/newview/llfloaterexperiences.cpp b/indra/newview/llfloaterexperiences.cpp index 98b26f5ac9..ac79c9ab43 100644 --- a/indra/newview/llfloaterexperiences.cpp +++ b/indra/newview/llfloaterexperiences.cpp @@ -43,7 +43,7 @@ #define SHOW_RECENT_TAB (0) -class LLExperienceListResponder : public LLCurl::Responder +class LLExperienceListResponder : public LLHTTPClient::Responder { public: typedef std::map NameMap; diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 487610b797..f70152fc59 100755 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -3620,7 +3620,7 @@ void LLPanelRegionExperiences::processResponse( const LLSD& content ) } -class LLRegionExperienceResponder : public LLCurl::Responder +class LLRegionExperienceResponder : public LLHTTPClient::Responder { public: typedef boost::function callback_t; diff --git a/indra/newview/llpanelexperiencepicker.cpp b/indra/newview/llpanelexperiencepicker.cpp index 3a55295d8c..0a572a8a5c 100644 --- a/indra/newview/llpanelexperiencepicker.cpp +++ b/indra/newview/llpanelexperiencepicker.cpp @@ -57,7 +57,7 @@ const static std::string columnSpace = " "; static LLPanelInjector t_panel_status("llpanelexperiencepicker"); -class LLExperienceSearchResponder : public LLCurl::Responder +class LLExperienceSearchResponder : public LLHTTPClient::Responder { public: LLUUID mQueryID; diff --git a/indra/newview/llpanelgroupexperiences.cpp b/indra/newview/llpanelgroupexperiences.cpp index 4f8c5eb94f..140a71a528 100644 --- a/indra/newview/llpanelgroupexperiences.cpp +++ b/indra/newview/llpanelgroupexperiences.cpp @@ -42,7 +42,7 @@ static LLPanelInjector t_panel_group_experiences("panel_group_experiences"); -class LLGroupExperienceResponder : public LLCurl::Responder +class LLGroupExperienceResponder : public LLHTTPClient::Responder { public: LLHandle mHandle; diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 780c41172d..1732d4b3e5 100755 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -123,7 +123,7 @@ static bool have_script_upload_cap(LLUUID& object_id) } -class ExperienceResponder : public LLCurl::Responder +class ExperienceResponder : public LLHTTPClient::Responder { public: ExperienceResponder(const LLHandle& parent):mParent(parent) -- cgit v1.3