From 5be45ded6037d432d2c1516a268c95ad2a62b110 Mon Sep 17 00:00:00 2001 From: Chris Baker Date: Thu, 23 Aug 2012 19:40:10 -0700 Subject: [PATCH 1/7] Start of getting WSGI service on viewer --- indra/newview/llgroupmgr.cpp | 91 +++++++++++++++++++++++++++ indra/newview/llgroupmgr.h | 3 + indra/newview/llpanelgroupgeneral.cpp | 9 ++- indra/newview/llpanelgroupinvite.cpp | 9 ++- indra/newview/llpanelgrouproles.cpp | 22 ++++++- indra/newview/llviewerregion.cpp | 1 + 6 files changed, 129 insertions(+), 6 deletions(-) diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index c66085dacd..3f1abadf60 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1477,6 +1477,10 @@ void LLGroupMgr::sendGroupMembersRequest(const LLUUID& group_id) } } + + + + void LLGroupMgr::sendGroupRoleDataRequest(const LLUUID& group_id) { lldebugs << "LLGroupMgr::sendGroupRoleDataRequest" << llendl; @@ -1830,6 +1834,93 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, } } + +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// +// STUBBED IN FOR code completion +class GroupMemberDataResponder : public LLHTTPClient::Responder +{ +public: + GroupMemberDataResponder() {} + virtual ~GroupMemberDataResponder() {} + virtual void result(const LLSD& pContent); + virtual void error(U32 pStatus, const std::string& pReason) {} +private: + LLSD mMemberData; +}; + +void GroupMemberDataResponder::result(const LLSD& pContent) +{ + LL_INFOS("BAKER") << "BAKER TAG ////////////////////////////////////////////////////////////////" << LL_ENDL; + // Did we get anything in pContent? + if(pContent.size()) + { + LL_INFOS("BAKER") << "Lik dis if u cry evertim" << LL_ENDL; + + // BAKER TODO: + // Figure out what to do with all the dataz. + // Looks like processGroupMembersReply does the work + LLUUID agent_id = pContent["agent_id"]; + LLUUID group_id = pContent["group_id"]; + LLSD member_list = pContent["members"]; + LLSD titles = pContent["titles"]; + LLSD defaults = pContent["defaults"]; + + int i = 0; + ++i; + + + + } + else + { + LL_INFOS("BAKER") << "WE AIN'T FOUND SHIT!" << LL_ENDL; + + // BAKER TODO: + // Handle this case + + } + LL_INFOS("BAKER") << "//////////////////////////////////////////////////////////////////////////\n" << LL_ENDL; +} + +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// + +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// +// BAKER +// static +void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id) +{ + //sendGroupMembersRequest(group_id); + //return; + +#if 1 + LLViewerRegion* currentRegion = gAgent.getRegion(); + + // Check to make sure we have our capabilities + if(!currentRegion->capabilitiesReceived()) + { + LL_INFOS("BAKER") << " Capabilities not received! -- OSHITSON --" << LL_ENDL; + // BAKER TODO: Handle this! + } + + // Get our capability + std::string cap_url = currentRegion->getCapability("GroupMemberData"); + + // Post to our service. Add a body containing the group_id. + LLSD body = LLSD::emptyMap(); + body["group_id"] = group_id; + + LLHTTPClient::ResponderPtr grp_data_responder = new GroupMemberDataResponder(); + // This could take a while to finish, timeout after 10 minutes. + LLHTTPClient::post(cap_url, body, grp_data_responder, LLSD(), 600); +#endif +} +////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////// + + void LLGroupMgr::sendGroupRoleChanges(const LLUUID& group_id) { lldebugs << "LLGroupMgr::sendGroupRoleChanges" << llendl; diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h index 019ce5fad4..066c98a27a 100644 --- a/indra/newview/llgroupmgr.h +++ b/indra/newview/llgroupmgr.h @@ -346,6 +346,9 @@ public: static void sendGroupMemberEjects(const LLUUID& group_id, uuid_vec_t& member_ids); + // BAKER + void sendCapGroupMembersRequest(const LLUUID& group_id); + void cancelGroupRoleChanges(const LLUUID& group_id); static void processGroupPropertiesReply(LLMessageSystem* msg, void** data); diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index b3fb5d338b..e0341e501a 100644 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -339,7 +339,12 @@ void LLPanelGroupGeneral::activate() if (!gdatap || !gdatap->isMemberDataComplete() ) { - LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); + ////////////////////////////////////////////////////////////////////////// + // BAKER TODO: + // Use cap here! + ////////////////////////////////////////////////////////////////////////// + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); + //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } mFirstUse = FALSE; @@ -774,7 +779,7 @@ void LLPanelGroupGeneral::updateMembers() for( ; mMemberProgress != gdatap->mMembers.end() && ifirst << ", " << iter->second->getTitle() << llendl; + llinfos << "Adding " << mMemberProgress->first << ", " << mMemberProgress->second->getTitle() << llendl; LLGroupMemberData* member = mMemberProgress->second; if (!member) { diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp index 7a15d93181..f4b7de5cf5 100644 --- a/indra/newview/llpanelgroupinvite.cpp +++ b/indra/newview/llpanelgroupinvite.cpp @@ -558,7 +558,14 @@ void LLPanelGroupInvite::updateLists() if (!mPendingUpdate) { LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mImplementation->mGroupID); - LLGroupMgr::getInstance()->sendGroupMembersRequest(mImplementation->mGroupID); + + ////////////////////////////////////////////////////////////////////////// + // BAKER TODO: + // Use cap here! + ////////////////////////////////////////////////////////////////////////// + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mImplementation->mGroupID); + //LLGroupMgr::getInstance()->sendGroupMembersRequest(mImplementation->mGroupID); + LLGroupMgr::getInstance()->sendGroupRoleDataRequest(mImplementation->mGroupID); } mPendingUpdate = TRUE; diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index f825ee3215..9b0fb37693 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -356,7 +356,12 @@ void LLPanelGroupRoles::activate() if (!gdatap || !gdatap->isMemberDataComplete() ) { - LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); + ////////////////////////////////////////////////////////////////////////// + // BAKER TODO: + // Use cap here! + ////////////////////////////////////////////////////////////////////////// + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); + //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } // Check role data. @@ -1987,7 +1992,12 @@ void LLPanelGroupRolesSubTab::update(LLGroupChange gc) if (!gdatap || !gdatap->isMemberDataComplete()) { - LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); + ////////////////////////////////////////////////////////////////////////// + // BAKER TODO: + // Use cap here! + ////////////////////////////////////////////////////////////////////////// + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); + //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } if (!gdatap || !gdatap->isRoleMemberDataComplete()) @@ -2580,7 +2590,12 @@ void LLPanelGroupActionsSubTab::handleActionSelect() } else { - LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); + ////////////////////////////////////////////////////////////////////////// + // BAKER TODO: + // Use cap here! + ////////////////////////////////////////////////////////////////////////// + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); + //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } if (gdatap->isRoleDataComplete()) @@ -2604,6 +2619,7 @@ void LLPanelGroupActionsSubTab::handleActionSelect() LLGroupMgr::getInstance()->sendGroupRoleDataRequest(mGroupID); } } + void LLPanelGroupRoles::setGroupID(const LLUUID& id) { LLPanelGroupTab::setGroupID(id); diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 8c323d3ae0..d1ac72d3b4 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -1546,6 +1546,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames) capabilityNames.append("GetDisplayNames"); capabilityNames.append("GetTexture"); + capabilityNames.append("GroupMemberData"); capabilityNames.append("GetMesh"); capabilityNames.append("GetObjectCost"); capabilityNames.append("GetObjectPhysicsData"); From 2ffd934e5ec2703ac323800d3496441db39c78a5 Mon Sep 17 00:00:00 2001 From: Chris Baker Date: Tue, 28 Aug 2012 17:32:01 -0700 Subject: [PATCH 2/7] Got viewer displaying new data format --- indra/newview/llgroupmgr.cpp | 142 +++++++++++++++++++++++++++-------- indra/newview/llgroupmgr.h | 2 + 2 files changed, 114 insertions(+), 30 deletions(-) diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 3f1abadf60..521141f1bc 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1849,38 +1849,13 @@ private: LLSD mMemberData; }; -void GroupMemberDataResponder::result(const LLSD& pContent) +void GroupMemberDataResponder::result(const LLSD& content) { LL_INFOS("BAKER") << "BAKER TAG ////////////////////////////////////////////////////////////////" << LL_ENDL; - // Did we get anything in pContent? - if(pContent.size()) - { - LL_INFOS("BAKER") << "Lik dis if u cry evertim" << LL_ENDL; - - // BAKER TODO: - // Figure out what to do with all the dataz. - // Looks like processGroupMembersReply does the work - LLUUID agent_id = pContent["agent_id"]; - LLUUID group_id = pContent["group_id"]; - LLSD member_list = pContent["members"]; - LLSD titles = pContent["titles"]; - LLSD defaults = pContent["defaults"]; - - int i = 0; - ++i; - - - - } - else - { - LL_INFOS("BAKER") << "WE AIN'T FOUND SHIT!" << LL_ENDL; - - // BAKER TODO: - // Handle this case - - } + LL_INFOS("BAKER") << "Got data from responder" << LL_ENDL; + LLGroupMgr::processCapGroupMembersRequest(content); LL_INFOS("BAKER") << "//////////////////////////////////////////////////////////////////////////\n" << LL_ENDL; + } ////////////////////////////////////////////////////////////////////////// @@ -1896,6 +1871,7 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id) //return; #if 1 + LLViewerRegion* currentRegion = gAgent.getRegion(); // Check to make sure we have our capabilities @@ -1910,13 +1886,119 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id) // Post to our service. Add a body containing the group_id. LLSD body = LLSD::emptyMap(); - body["group_id"] = group_id; + body["group_id"] = group_id; + // Session id? LLHTTPClient::ResponderPtr grp_data_responder = new GroupMemberDataResponder(); // This could take a while to finish, timeout after 10 minutes. LLHTTPClient::post(cap_url, body, grp_data_responder, LLSD(), 600); + #endif } + + +// static +void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) +{ + LL_INFOS("BAKER") << "BAKER TAG ////////////////////////////////////////////////////////////////" << LL_ENDL; + // Did we get anything in content? + if(!content.size()) + { + LL_INFOS("BAKER") << "WE AIN'T FOUND SHIT!" << LL_ENDL; + // BAKER TODO: + // Handle this case + } + + LL_INFOS("BAKER") << "Lik dis if u cry evertim" << LL_ENDL; + + // If we have no members, there's no reason to do anything else + S32 num_members = content["member_count"]; + if(num_members < 1) + return; + + LLUUID group_id = content["group_id"].asUUID(); + + LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id); + if(!group_datap) + { + LL_WARNS("GrpMgr") << "Received incorrect, possibly stale, group or request id" << LL_ENDL; + return; + } + + group_datap->mMemberCount = num_members; + + LLSD member_list = content["members"]; + LLSD titles = content["titles"]; + LLSD defaults = content["defaults"]; + + std::string online_status; + std::string title; + S32 contribution; + U64 member_powers; + // If this is changed to a bool, make sure to change the LLGroupMemberData constructor + BOOL is_owner; + + // Compute this once, rather than every time. + U64 default_powers = llstrtou64(defaults["default_powers"].asString().c_str(), NULL, 16); + + LLSD::map_const_iterator member_iter_start = member_list.beginMap(); + LLSD::map_const_iterator member_iter_end = member_list.endMap(); + for( ; member_iter_start != member_iter_end; ++member_iter_start) + { + // Reset defaults + online_status = "unknown"; + title = titles[0]; + contribution = 0; + member_powers = default_powers; + is_owner = false; + + const LLUUID member_id(member_iter_start->first); + LLSD member_info = member_iter_start->second; + + // Online Status + if(member_info.has("last_login")) + { + online_status = member_info["last_login"]; + if(online_status == "Online") + online_status = LLTrans::getString("group_member_status_online"); + else + formatDateString(online_status); + } + + // Title + if(member_info.has("title")) + title = titles[member_info["title"].asInteger()]; + + // Powers + if(member_info.has("powers")) + member_powers = llstrtou64(member_info["powers"].asString().c_str(), NULL, 16); + + // Land Contribution + if(member_info.has("donated_square_meters")) + contribution = member_info["donated_square_meters"]; + + if(member_info.has("owner")) + is_owner = true; + + LLGroupMemberData* data = new LLGroupMemberData(member_id, + contribution, + member_powers, + title, + online_status, + is_owner); + + group_datap->mMembers[member_id] = data; + } + + group_datap->mMemberDataComplete = TRUE; + group_datap->mRoleMemberDataComplete = TRUE; + group_datap->mMemberRequestID.setNull(); + group_datap->mChanged = TRUE; + LLGroupMgr::getInstance()->notifyObservers(GC_MEMBER_DATA); + + LL_INFOS("BAKER") << "//////////////////////////////////////////////////////////////////////////\n" << LL_ENDL; +} + ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h index 066c98a27a..3d1a75006c 100644 --- a/indra/newview/llgroupmgr.h +++ b/indra/newview/llgroupmgr.h @@ -347,7 +347,9 @@ public: uuid_vec_t& member_ids); // BAKER + //static void sendCapGroupMembersRequest(const LLUUID& group_id); void sendCapGroupMembersRequest(const LLUUID& group_id); + static void processCapGroupMembersRequest(const LLSD& content); void cancelGroupRoleChanges(const LLUUID& group_id); From fb72678a1df35f8c1c6bffcd708efb92bdc4dff7 Mon Sep 17 00:00:00 2001 From: Chris Baker Date: Fri, 31 Aug 2012 17:53:47 -0700 Subject: [PATCH 3/7] - Fixed an issue where service was called twice in a frame - Changed level of output logs - Cleaned up comments --- indra/newview/llgroupmgr.cpp | 54 +++++++++++++-------------- indra/newview/llgroupmgr.h | 3 +- indra/newview/llpanelgroupgeneral.cpp | 16 +++----- indra/newview/llpanelgroupinvite.cpp | 4 -- indra/newview/llpanelgrouproles.cpp | 12 ------ 5 files changed, 34 insertions(+), 55 deletions(-) diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 521141f1bc..64d0d3a5b1 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -36,6 +36,7 @@ #include #include +#include "llappviewer.h" #include "llagent.h" #include "llui.h" #include "message.h" @@ -743,6 +744,7 @@ void LLGroupMgrGroupData::cancelRoleChanges() LLGroupMgr::LLGroupMgr() { + mLastGroupMembersRequestFrame = 0; } LLGroupMgr::~LLGroupMgr() @@ -1478,9 +1480,6 @@ void LLGroupMgr::sendGroupMembersRequest(const LLUUID& group_id) } - - - void LLGroupMgr::sendGroupRoleDataRequest(const LLUUID& group_id) { lldebugs << "LLGroupMgr::sendGroupRoleDataRequest" << llendl; @@ -1837,7 +1836,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// -// STUBBED IN FOR code completion +// I DON'T KNOW WHERE TO PUT THIS class GroupMemberDataResponder : public LLHTTPClient::Responder { public: @@ -1851,26 +1850,18 @@ private: void GroupMemberDataResponder::result(const LLSD& content) { - LL_INFOS("BAKER") << "BAKER TAG ////////////////////////////////////////////////////////////////" << LL_ENDL; - LL_INFOS("BAKER") << "Got data from responder" << LL_ENDL; LLGroupMgr::processCapGroupMembersRequest(content); - LL_INFOS("BAKER") << "//////////////////////////////////////////////////////////////////////////\n" << LL_ENDL; - } - -////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////// - ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// -// BAKER + + // static void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id) { - //sendGroupMembersRequest(group_id); - //return; - -#if 1 + // Have we requested the information already this frame? + if(mLastGroupMembersRequestFrame == gFrameCount) + return; LLViewerRegion* currentRegion = gAgent.getRegion(); @@ -1893,24 +1884,20 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id) // This could take a while to finish, timeout after 10 minutes. LLHTTPClient::post(cap_url, body, grp_data_responder, LLSD(), 600); -#endif + mLastGroupMembersRequestFrame = gFrameCount; } // static void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) { - LL_INFOS("BAKER") << "BAKER TAG ////////////////////////////////////////////////////////////////" << LL_ENDL; // Did we get anything in content? if(!content.size()) { - LL_INFOS("BAKER") << "WE AIN'T FOUND SHIT!" << LL_ENDL; // BAKER TODO: - // Handle this case + // Maybe display a popup saying something went wrong? } - LL_INFOS("BAKER") << "Lik dis if u cry evertim" << LL_ENDL; - // If we have no members, there's no reason to do anything else S32 num_members = content["member_count"]; if(num_members < 1) @@ -1977,6 +1964,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) if(member_info.has("donated_square_meters")) contribution = member_info["donated_square_meters"]; + // Owner Flag if(member_info.has("owner")) is_owner = true; @@ -1990,18 +1978,28 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) group_datap->mMembers[member_id] = data; } + // Technically, we have this data, but to prevent completely overhauling + // this entire system (it would be nice, but I don't have the time), + // I'm going to be dumb and just call services I most likely don't need + // with the thought being that the system might need it to be done. + if(group_datap->mTitles.size() < 1) + LLGroupMgr::getInstance()->sendGroupTitlesRequest(group_id); + + group_datap->mMemberDataComplete = TRUE; - group_datap->mRoleMemberDataComplete = TRUE; group_datap->mMemberRequestID.setNull(); + // Make the role-member data request + if (group_datap->mPendingRoleMemberRequest) + { + group_datap->mPendingRoleMemberRequest = FALSE; + LLGroupMgr::getInstance()->sendGroupRoleMembersRequest(group_id); + } + group_datap->mChanged = TRUE; LLGroupMgr::getInstance()->notifyObservers(GC_MEMBER_DATA); - LL_INFOS("BAKER") << "//////////////////////////////////////////////////////////////////////////\n" << LL_ENDL; } -////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////// - void LLGroupMgr::sendGroupRoleChanges(const LLUUID& group_id) { diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h index 3d1a75006c..ad93c7c760 100644 --- a/indra/newview/llgroupmgr.h +++ b/indra/newview/llgroupmgr.h @@ -347,7 +347,6 @@ public: uuid_vec_t& member_ids); // BAKER - //static void sendCapGroupMembersRequest(const LLUUID& group_id); void sendCapGroupMembersRequest(const LLUUID& group_id); static void processCapGroupMembersRequest(const LLSD& content); @@ -386,6 +385,8 @@ private: typedef std::set observer_set_t; typedef std::map observer_map_t; observer_map_t mParticularObservers; + + S32 mLastGroupMembersRequestFrame; }; diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index e0341e501a..156763cf65 100644 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -339,10 +339,6 @@ void LLPanelGroupGeneral::activate() if (!gdatap || !gdatap->isMemberDataComplete() ) { - ////////////////////////////////////////////////////////////////////////// - // BAKER TODO: - // Use cap here! - ////////////////////////////////////////////////////////////////////////// LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } @@ -779,7 +775,7 @@ void LLPanelGroupGeneral::updateMembers() for( ; mMemberProgress != gdatap->mMembers.end() && ifirst << ", " << mMemberProgress->second->getTitle() << llendl; + lldebugs << "Adding " << mMemberProgress->first << ", " << mMemberProgress->second->getTitle() << llendl; LLGroupMemberData* member = mMemberProgress->second; if (!member) { @@ -823,15 +819,15 @@ void LLPanelGroupGeneral::updateMembers() } sAllTime += all_timer.getElapsedTimeF32(); - llinfos << "Updated " << i << " of " << UPDATE_MEMBERS_PER_FRAME << "members in the list." << llendl; + lldebugs << "Updated " << i << " of " << UPDATE_MEMBERS_PER_FRAME << "members in the list." << llendl; if (mMemberProgress == gdatap->mMembers.end()) { - llinfos << " member list completed." << llendl; + lldebugs << " member list completed." << llendl; mListVisibleMembers->setEnabled(TRUE); - llinfos << "All Time: " << sAllTime << llendl; - llinfos << "SD Time: " << sSDTime << llendl; - llinfos << "Element Time: " << sElementTime << llendl; + lldebugs << "All Time: " << sAllTime << llendl; + lldebugs << "SD Time: " << sSDTime << llendl; + lldebugs << "Element Time: " << sElementTime << llendl; } else { diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp index f4b7de5cf5..aa1fb168a0 100644 --- a/indra/newview/llpanelgroupinvite.cpp +++ b/indra/newview/llpanelgroupinvite.cpp @@ -559,10 +559,6 @@ void LLPanelGroupInvite::updateLists() { LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mImplementation->mGroupID); - ////////////////////////////////////////////////////////////////////////// - // BAKER TODO: - // Use cap here! - ////////////////////////////////////////////////////////////////////////// LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mImplementation->mGroupID); //LLGroupMgr::getInstance()->sendGroupMembersRequest(mImplementation->mGroupID); diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 9b0fb37693..0e40224346 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -356,10 +356,6 @@ void LLPanelGroupRoles::activate() if (!gdatap || !gdatap->isMemberDataComplete() ) { - ////////////////////////////////////////////////////////////////////////// - // BAKER TODO: - // Use cap here! - ////////////////////////////////////////////////////////////////////////// LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } @@ -1992,10 +1988,6 @@ void LLPanelGroupRolesSubTab::update(LLGroupChange gc) if (!gdatap || !gdatap->isMemberDataComplete()) { - ////////////////////////////////////////////////////////////////////////// - // BAKER TODO: - // Use cap here! - ////////////////////////////////////////////////////////////////////////// LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } @@ -2590,10 +2582,6 @@ void LLPanelGroupActionsSubTab::handleActionSelect() } else { - ////////////////////////////////////////////////////////////////////////// - // BAKER TODO: - // Use cap here! - ////////////////////////////////////////////////////////////////////////// LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } From be467b57969ffeaa46c9017584699089b8acb80d Mon Sep 17 00:00:00 2001 From: Chris Baker Date: Tue, 4 Sep 2012 10:54:16 -0700 Subject: [PATCH 4/7] Cleaned up comments --- indra/newview/llgroupmgr.cpp | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 64d0d3a5b1..dd81e06f84 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1834,9 +1834,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, } -////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////// -// I DON'T KNOW WHERE TO PUT THIS +// Responder class for capability group management class GroupMemberDataResponder : public LLHTTPClient::Responder { public: @@ -1852,8 +1850,6 @@ void GroupMemberDataResponder::result(const LLSD& content) { LLGroupMgr::processCapGroupMembersRequest(content); } -////////////////////////////////////////////////////////////////////////// -////////////////////////////////////////////////////////////////////////// // static @@ -1868,8 +1864,8 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id) // Check to make sure we have our capabilities if(!currentRegion->capabilitiesReceived()) { - LL_INFOS("BAKER") << " Capabilities not received! -- OSHITSON --" << LL_ENDL; - // BAKER TODO: Handle this! + LL_INFOS("BAKER") << " Capabilities not received!" << LL_ENDL; + return; } // Get our capability @@ -1878,10 +1874,10 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id) // Post to our service. Add a body containing the group_id. LLSD body = LLSD::emptyMap(); body["group_id"] = group_id; - // Session id? LLHTTPClient::ResponderPtr grp_data_responder = new GroupMemberDataResponder(); - // This could take a while to finish, timeout after 10 minutes. + + // This could take a while to finish, timeout after 10 minutes. LLHTTPClient::post(cap_url, body, grp_data_responder, LLSD(), 600); mLastGroupMembersRequestFrame = gFrameCount; @@ -1894,8 +1890,8 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) // Did we get anything in content? if(!content.size()) { - // BAKER TODO: - // Maybe display a popup saying something went wrong? + LL_DEBUGS("GrpMgr") << "No group member data received." << LL_ENDL; + return; } // If we have no members, there's no reason to do anything else @@ -1941,8 +1937,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) const LLUUID member_id(member_iter_start->first); LLSD member_info = member_iter_start->second; - - // Online Status + if(member_info.has("last_login")) { online_status = member_info["last_login"]; @@ -1952,19 +1947,15 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) formatDateString(online_status); } - // Title if(member_info.has("title")) title = titles[member_info["title"].asInteger()]; - // Powers if(member_info.has("powers")) member_powers = llstrtou64(member_info["powers"].asString().c_str(), NULL, 16); - // Land Contribution if(member_info.has("donated_square_meters")) contribution = member_info["donated_square_meters"]; - // Owner Flag if(member_info.has("owner")) is_owner = true; From a60fcdcddf5312b0b7ce7628945bf141cce09e1c Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Wed, 5 Sep 2012 15:55:34 -0700 Subject: [PATCH 5/7] [MAINT-513] Large group management - Reduced the timeout to 5 minutes, down from 10 minutes. - Provided output for GroupMemberResponder error - Removed commented calls to sendGroupMembersRequest - Reordered calls to sendCapGroupMembersRequest so it's called last --- indra/newview/llgroupmgr.cpp | 16 ++++++++++++---- indra/newview/llpanelgroupgeneral.cpp | 2 -- indra/newview/llpanelgroupinvite.cpp | 5 +---- indra/newview/llpanelgrouproles.cpp | 3 --- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index dd81e06f84..9076ec20c4 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1841,11 +1841,16 @@ public: GroupMemberDataResponder() {} virtual ~GroupMemberDataResponder() {} virtual void result(const LLSD& pContent); - virtual void error(U32 pStatus, const std::string& pReason) {} + virtual void error(U32 pStatus, const std::string& pReason); private: LLSD mMemberData; }; +void GroupMemberDataResponder::error(U32 pStatus, const std::string& pReason) +{ + LL_WARNS("GrpMgr") << "Error receiving group member data." << LL_ENDL; +} + void GroupMemberDataResponder::result(const LLSD& content) { LLGroupMgr::processCapGroupMembersRequest(content); @@ -1864,7 +1869,7 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id) // Check to make sure we have our capabilities if(!currentRegion->capabilitiesReceived()) { - LL_INFOS("BAKER") << " Capabilities not received!" << LL_ENDL; + LL_WARNS("GrpMgr") << " Capabilities not received!" << LL_ENDL; return; } @@ -1877,8 +1882,8 @@ void LLGroupMgr::sendCapGroupMembersRequest(const LLUUID& group_id) LLHTTPClient::ResponderPtr grp_data_responder = new GroupMemberDataResponder(); - // This could take a while to finish, timeout after 10 minutes. - LLHTTPClient::post(cap_url, body, grp_data_responder, LLSD(), 600); + // This could take a while to finish, timeout after 5 minutes. + LLHTTPClient::post(cap_url, body, grp_data_responder, LLSD(), 300); mLastGroupMembersRequestFrame = gFrameCount; } @@ -1973,6 +1978,9 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) // this entire system (it would be nice, but I don't have the time), // I'm going to be dumb and just call services I most likely don't need // with the thought being that the system might need it to be done. + // + // TODO: + // Refactor to reduce multiple calls for data we already have. if(group_datap->mTitles.size() < 1) LLGroupMgr::getInstance()->sendGroupTitlesRequest(group_id); diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index 156763cf65..e102981b63 100644 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -335,12 +335,10 @@ void LLPanelGroupGeneral::activate() { LLGroupMgr::getInstance()->sendGroupTitlesRequest(mGroupID); LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mGroupID); - if (!gdatap || !gdatap->isMemberDataComplete() ) { LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); - //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } mFirstUse = FALSE; diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp index aa1fb168a0..f873e0f5a8 100644 --- a/indra/newview/llpanelgroupinvite.cpp +++ b/indra/newview/llpanelgroupinvite.cpp @@ -558,11 +558,8 @@ void LLPanelGroupInvite::updateLists() if (!mPendingUpdate) { LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mImplementation->mGroupID); - - LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mImplementation->mGroupID); - //LLGroupMgr::getInstance()->sendGroupMembersRequest(mImplementation->mGroupID); - LLGroupMgr::getInstance()->sendGroupRoleDataRequest(mImplementation->mGroupID); + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mImplementation->mGroupID); } mPendingUpdate = TRUE; } diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 0e40224346..bbe47ae943 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -357,7 +357,6 @@ void LLPanelGroupRoles::activate() if (!gdatap || !gdatap->isMemberDataComplete() ) { LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); - //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } // Check role data. @@ -1989,7 +1988,6 @@ void LLPanelGroupRolesSubTab::update(LLGroupChange gc) if (!gdatap || !gdatap->isMemberDataComplete()) { LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); - //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } if (!gdatap || !gdatap->isRoleMemberDataComplete()) @@ -2583,7 +2581,6 @@ void LLPanelGroupActionsSubTab::handleActionSelect() else { LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID); - //LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID); } if (gdatap->isRoleDataComplete()) From 7ca69136a9f38655509533883b411a7bcc535fb3 Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Thu, 6 Sep 2012 15:19:05 -0700 Subject: [PATCH 6/7] Added explicit casting for Linux build, hopefully making it work. --- indra/newview/llgroupmgr.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 9076ec20c4..e51b6a78e2 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1935,7 +1935,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) { // Reset defaults online_status = "unknown"; - title = titles[0]; + title = (std::string)titles[0]; contribution = 0; member_powers = default_powers; is_owner = false; @@ -1945,7 +1945,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) if(member_info.has("last_login")) { - online_status = member_info["last_login"]; + online_status = (std::string)member_info["last_login"]; if(online_status == "Online") online_status = LLTrans::getString("group_member_status_online"); else @@ -1953,7 +1953,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) } if(member_info.has("title")) - title = titles[member_info["title"].asInteger()]; + title = (std::string)titles[member_info["title"].asInteger()]; if(member_info.has("powers")) member_powers = llstrtou64(member_info["powers"].asString().c_str(), NULL, 16); From c0b21710ee0415178f0b3f804002899f2d0b8e93 Mon Sep 17 00:00:00 2001 From: Baker Linden Date: Thu, 6 Sep 2012 16:00:59 -0700 Subject: [PATCH 7/7] Do the proper fix this time... --- indra/newview/llgroupmgr.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index e51b6a78e2..32c8ebff80 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1935,7 +1935,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) { // Reset defaults online_status = "unknown"; - title = (std::string)titles[0]; + title = titles[0].asString(); contribution = 0; member_powers = default_powers; is_owner = false; @@ -1945,7 +1945,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) if(member_info.has("last_login")) { - online_status = (std::string)member_info["last_login"]; + online_status = member_info["last_login"].asString(); if(online_status == "Online") online_status = LLTrans::getString("group_member_status_online"); else @@ -1953,7 +1953,7 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content) } if(member_info.has("title")) - title = (std::string)titles[member_info["title"].asInteger()]; + title = titles[member_info["title"].asInteger()].asString(); if(member_info.has("powers")) member_powers = llstrtou64(member_info["powers"].asString().c_str(), NULL, 16);