#3547 Further reduce ParcelInfoRequest calls
parent
4e5dce7949
commit
d3d0728bac
|
|
@ -55,7 +55,7 @@
|
|||
static LLPanelInjector<LLPanelProfilePicks> t_panel_profile_picks("panel_profile_picks");
|
||||
static LLPanelInjector<LLPanelProfilePick> t_panel_profile_pick("panel_profile_pick");
|
||||
|
||||
constexpr F32 REQUEST_TIMOUT = 60;
|
||||
constexpr F32 REQUEST_TIMEOUT = 60;
|
||||
constexpr F32 LOCATION_CACHE_TIMOUT = 900;
|
||||
|
||||
class LLPickHandler : public LLCommandHandler
|
||||
|
|
@ -842,7 +842,7 @@ std::string LLPanelProfilePick::getLocationNotice()
|
|||
|
||||
void LLPanelProfilePick::sendParcelInfoRequest()
|
||||
{
|
||||
if (mParcelId != mRequestedId || mLastRequestTimer.getElapsedTimeF32() > REQUEST_TIMOUT)
|
||||
if (mParcelId != mRequestedId || mLastRequestTimer.getElapsedTimeF32() > REQUEST_TIMEOUT)
|
||||
{
|
||||
if (mRequestedId.notNull())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -102,7 +102,15 @@ void LLRemoteParcelInfoProcessor::processParcelInfoReply(LLMessageSystem* msg, v
|
|||
msg->getS32 ("Data", "SalePrice", parcel_data.sale_price);
|
||||
msg->getS32 ("Data", "AuctionID", parcel_data.auction_id);
|
||||
|
||||
LLRemoteParcelInfoProcessor::observer_multimap_t & observers = LLRemoteParcelInfoProcessor::getInstance()->mObservers;
|
||||
LLRemoteParcelInfoProcessor* inst = LLRemoteParcelInfoProcessor::getInstance();
|
||||
|
||||
requests_map_t::const_iterator found = inst->mPendingParcelRequests.find(parcel_data.parcel_id);
|
||||
if (found != inst->mPendingParcelRequests.end())
|
||||
{
|
||||
inst->mPendingParcelRequests.erase(found);
|
||||
}
|
||||
|
||||
LLRemoteParcelInfoProcessor::observer_multimap_t & observers = inst->mObservers;
|
||||
|
||||
typedef std::vector<observer_multimap_t::iterator> deadlist_t;
|
||||
deadlist_t dead_iters;
|
||||
|
|
@ -151,6 +159,15 @@ void LLRemoteParcelInfoProcessor::processParcelInfoReply(LLMessageSystem* msg, v
|
|||
|
||||
void LLRemoteParcelInfoProcessor::sendParcelInfoRequest(const LLUUID& parcel_id)
|
||||
{
|
||||
constexpr F32 DUPPLICATE_TIMEOUT = 0.5f;
|
||||
requests_map_t::const_iterator found = mPendingParcelRequests.find(parcel_id);
|
||||
if (found != mPendingParcelRequests.end() && found->second.getElapsedTimeF32() < DUPPLICATE_TIMEOUT)
|
||||
{
|
||||
// recently requested
|
||||
return;
|
||||
}
|
||||
mPendingParcelRequests[parcel_id].reset();
|
||||
|
||||
LLMessageSystem *msg = gMessageSystem;
|
||||
|
||||
msg->newMessage("ParcelInfoRequest");
|
||||
|
|
|
|||
|
|
@ -91,6 +91,8 @@ public:
|
|||
private:
|
||||
typedef std::multimap<LLUUID, LLHandle<LLRemoteParcelInfoObserver> > observer_multimap_t;
|
||||
observer_multimap_t mObservers;
|
||||
typedef std::map<LLUUID, LLTimer> requests_map_t;
|
||||
requests_map_t mPendingParcelRequests; // Dupplicate request avoidance
|
||||
|
||||
void regionParcelInfoCoro(std::string url, LLUUID regionId, LLVector3 posRegion, LLVector3d posGlobal, LLHandle<LLRemoteParcelInfoObserver> observerHandle);
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue