Old-code related to sim-quota cleaned up.
This commit is contained in:
@@ -96,7 +96,7 @@ set(llcommon_HEADER_FILES
|
||||
indra_constants.h
|
||||
linden_common.h
|
||||
linked_lists.h
|
||||
llaccountingquota.h
|
||||
llaccountingcost.h
|
||||
llagentconstants.h
|
||||
llavatarname.h
|
||||
llapp.h
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @file llaccountingquota.h
|
||||
* @file llaccountingcost.h
|
||||
* @
|
||||
*
|
||||
* $LicenseInfo:firstyear=2001&license=viewerlgpl$
|
||||
@@ -58,22 +58,28 @@ struct ParcelQuota
|
||||
F32 mParcelCapacity;
|
||||
};
|
||||
|
||||
struct SelectionQuota
|
||||
//SelectionQuota atm does not require a id
|
||||
struct SelectionCost
|
||||
{
|
||||
SelectionQuota( LLUUID localId, F32 renderCost, F32 physicsCost, F32 networkCost, F32 simulationCost )
|
||||
: mLocalId( localId)
|
||||
, mRenderCost( renderCost )
|
||||
, mPhysicsCost( physicsCost )
|
||||
SelectionCost( /*LLTransactionID transactionId, */ F32 physicsCost, F32 networkCost, F32 simulationCost )
|
||||
//: mTransactionId( transactionId)
|
||||
: mPhysicsCost( physicsCost )
|
||||
, mNetworkCost( networkCost )
|
||||
, mSimulationCost( simulationCost )
|
||||
{
|
||||
}
|
||||
SelectionQuota() {}
|
||||
SelectionCost()
|
||||
: mPhysicsCost( 0.0f )
|
||||
, mNetworkCost( 0.0f )
|
||||
, mSimulationCost( 0.0f )
|
||||
{}
|
||||
|
||||
F32 mRenderCost, mPhysicsCost, mNetworkCost, mSimulationCost;
|
||||
LLUUID mLocalId;
|
||||
F32 mPhysicsCost, mNetworkCost, mSimulationCost;
|
||||
//LLTransactionID mTransactionId;
|
||||
};
|
||||
|
||||
typedef enum { Roots = 0 , Prims } eSelectionType;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1354,13 +1354,3 @@ LLParcel::ECategory category_ui_string_to_category(const std::string& s)
|
||||
// is a distinct option from "None" and "Other"
|
||||
return LLParcel::C_ANY;
|
||||
}
|
||||
|
||||
#if MESH_ENABLED
|
||||
void LLParcel::updateQuota( const LLUUID& objectId, const ParcelQuota& quota )
|
||||
{
|
||||
if ( mID == objectId )
|
||||
{
|
||||
mQuota = quota;
|
||||
}
|
||||
}
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
@@ -40,9 +40,6 @@
|
||||
#include "llpermissions.h"
|
||||
#include "lltimer.h"
|
||||
#include "v3math.h"
|
||||
#if MESH_ENABLED
|
||||
#include "llaccountingquota.h"
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
// Grid out of which parcels taken is stepped every 4 meters.
|
||||
const F32 PARCEL_GRID_STEP_METERS = 4.f;
|
||||
@@ -602,10 +599,7 @@ public:
|
||||
BOOL getPreviouslyGroupOwned() const { return mPreviouslyGroupOwned; }
|
||||
BOOL getSellWithObjects() const { return (mParcelFlags & PF_SELL_PARCEL_OBJECTS) ? TRUE : FALSE; }
|
||||
|
||||
#if MESH_ENABLED
|
||||
void updateQuota( const LLUUID& objectId, const ParcelQuota& quota );
|
||||
const ParcelQuota& getQuota( void ) { return mQuota; }
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
protected:
|
||||
LLUUID mID;
|
||||
LLUUID mOwnerID;
|
||||
@@ -678,9 +672,6 @@ protected:
|
||||
BOOL mRegionPushOverride;
|
||||
BOOL mRegionDenyAnonymousOverride;
|
||||
BOOL mRegionDenyAgeUnverifiedOverride;
|
||||
#if MESH_ENABLED
|
||||
ParcelQuota mQuota;
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
public:
|
||||
// HACK, make private
|
||||
|
||||
@@ -100,7 +100,7 @@ set(viewer_SOURCE_FILES
|
||||
jcfloaterareasearch.cpp
|
||||
chatbar_as_cmdline.cpp
|
||||
qtoolalign.cpp
|
||||
llaccountingquotamanager.cpp
|
||||
llaccountingcostmanager.cpp
|
||||
llagent.cpp
|
||||
llagentaccess.cpp
|
||||
llagentcamera.cpp
|
||||
@@ -580,7 +580,7 @@ set(viewer_HEADER_FILES
|
||||
lgghunspell_wrapper.h
|
||||
chatbar_as_cmdline.h
|
||||
qtoolalign.h
|
||||
llaccountingquotamanager.h
|
||||
llaccountingcostmanager.h
|
||||
llagent.h
|
||||
llagentaccess.h
|
||||
llagentcamera.h
|
||||
|
||||
173
indra/newview/llaccountingcostmanager.cpp
Normal file
173
indra/newview/llaccountingcostmanager.cpp
Normal file
@@ -0,0 +1,173 @@
|
||||
/**
|
||||
* @file LLAccountingQuotaManager.cpp
|
||||
* @ Handles the setting and accessing for costs associated with mesh
|
||||
*
|
||||
* $LicenseInfo:firstyear=2001&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2011, 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"
|
||||
#if MESH_ENABLED
|
||||
#include "llaccountingcostmanager.h"
|
||||
#include "llagent.h"
|
||||
#include "llcurl.h"
|
||||
#include "llhttpclient.h"
|
||||
|
||||
//===============================================================================
|
||||
LLAccountingCostManager::LLAccountingCostManager()
|
||||
{
|
||||
}
|
||||
//===============================================================================
|
||||
class LLAccountingCostResponder : public LLCurl::Responder
|
||||
{
|
||||
public:
|
||||
LLAccountingCostResponder( const LLSD& objectIDs )
|
||||
: mObjectIDs( objectIDs )
|
||||
{
|
||||
}
|
||||
|
||||
void clearPendingRequests ( void )
|
||||
{
|
||||
for ( LLSD::array_iterator iter = mObjectIDs.beginArray(); iter != mObjectIDs.endArray(); ++iter )
|
||||
{
|
||||
LLAccountingCostManager::getInstance()->removePendingObject( iter->asUUID() );
|
||||
}
|
||||
}
|
||||
|
||||
void error( U32 statusNum, const std::string& reason )
|
||||
{
|
||||
llwarns << "Transport error "<<reason<<llendl;
|
||||
clearPendingRequests();
|
||||
}
|
||||
|
||||
void result( const LLSD& content )
|
||||
{
|
||||
//Check for error
|
||||
if ( !content.isMap() || content.has("error") )
|
||||
{
|
||||
llwarns << "Error on fetched data"<< llendl;
|
||||
clearPendingRequests();
|
||||
return;
|
||||
}
|
||||
|
||||
bool containsSelection = content.has("selected");
|
||||
if ( containsSelection )
|
||||
{
|
||||
S32 dataCount = content["selected"].size();
|
||||
|
||||
for(S32 i = 0; i < dataCount; i++)
|
||||
{
|
||||
|
||||
F32 physicsCost = 0.0f;
|
||||
F32 networkCost = 0.0f;
|
||||
F32 simulationCost = 0.0f;
|
||||
|
||||
//LLTransactionID transactionID;
|
||||
|
||||
//transactionID = content["selected"][i]["local_id"].asUUID();
|
||||
physicsCost = content["selected"][i]["physics"].asReal();
|
||||
networkCost = content["selected"][i]["streaming"].asReal();
|
||||
simulationCost = content["selected"][i]["simulation"].asReal();
|
||||
|
||||
SelectionCost selectionCost( /*transactionID,*/ physicsCost, networkCost, simulationCost );
|
||||
|
||||
//How do you want to handle the updating of the invoking object/ui element?
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
//List of posted objects
|
||||
LLSD mObjectIDs;
|
||||
};
|
||||
//===============================================================================
|
||||
void LLAccountingCostManager::fetchCosts( eSelectionType selectionType, const std::string& url )
|
||||
{
|
||||
// Invoking system must have already determined capability availability
|
||||
if ( !url.empty() )
|
||||
{
|
||||
LLSD objectList;
|
||||
U32 objectIndex = 0;
|
||||
|
||||
IDIt IDIter = mObjectList.begin();
|
||||
IDIt IDIterEnd = mObjectList.end();
|
||||
|
||||
for ( ; IDIter != IDIterEnd; ++IDIter )
|
||||
{
|
||||
// Check to see if a request for this object has already been made.
|
||||
if ( mPendingObjectQuota.find( *IDIter ) == mPendingObjectQuota.end() )
|
||||
{
|
||||
mObjectList.insert( *IDIter );
|
||||
objectList[objectIndex++] = *IDIter;
|
||||
}
|
||||
}
|
||||
|
||||
mObjectList.clear();
|
||||
|
||||
//Post results
|
||||
if ( objectList.size() > 0 )
|
||||
{
|
||||
std::string keystr;
|
||||
if ( selectionType == Roots )
|
||||
{
|
||||
keystr="selected_roots";
|
||||
}
|
||||
else
|
||||
if ( selectionType == Prims )
|
||||
{
|
||||
keystr="prim_roots";
|
||||
}
|
||||
else
|
||||
{
|
||||
llinfos<<"Invalid selection type "<<llendl;
|
||||
mObjectList.clear();
|
||||
mPendingObjectQuota.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
LLSD dataToPost = LLSD::emptyMap();
|
||||
dataToPost[keystr.c_str()] = objectList;
|
||||
|
||||
LLHTTPClient::post( url, dataToPost, new LLAccountingCostResponder( objectList ));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//url was empty - warn & continue
|
||||
llwarns<<"Supplied url is empty "<<llendl;
|
||||
mObjectList.clear();
|
||||
mPendingObjectQuota.clear();
|
||||
}
|
||||
}
|
||||
//===============================================================================
|
||||
void LLAccountingCostManager::addObject( const LLUUID& objectID )
|
||||
{
|
||||
mObjectList.insert( objectID );
|
||||
}
|
||||
//===============================================================================
|
||||
void LLAccountingCostManager::removePendingObject( const LLUUID& objectID )
|
||||
{
|
||||
mPendingObjectQuota.erase( objectID );
|
||||
}
|
||||
//===============================================================================
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
@@ -27,29 +27,29 @@
|
||||
#ifndef LL_ACCOUNTINGQUOTAMANAGER_H
|
||||
#define LL_ACCOUNTINGQUOTAMANAGER_H
|
||||
//===============================================================================
|
||||
#include "llaccountingquota.h"
|
||||
#include "llaccountingcost.h"
|
||||
//===============================================================================
|
||||
class LLAccountingQuotaManager : public LLSingleton<LLAccountingQuotaManager>
|
||||
class LLAccountingCostManager : public LLSingleton<LLAccountingCostManager>
|
||||
{
|
||||
public:
|
||||
//Ctor
|
||||
LLAccountingQuotaManager();
|
||||
LLAccountingCostManager();
|
||||
//Store an object that will be eventually fetched
|
||||
void updateObjectCost( const LLUUID& objectID );
|
||||
void addObject( const LLUUID& objectID );
|
||||
//Request quotas for object list
|
||||
void fetchQuotas( const std::string& url );
|
||||
void fetchCosts( eSelectionType selectionType, const std::string& url );
|
||||
//Delete a specific object from the pending list
|
||||
void removePendingObjectQuota( const LLUUID& objectID );
|
||||
void removePendingObject( const LLUUID& objectID );
|
||||
|
||||
private:
|
||||
//Set of objects that need to update their cost
|
||||
std::set<LLUUID> mUpdateObjectQuota;
|
||||
//During fetchQuota we move object into a the pending set to signify that
|
||||
//Set of objects that will be used to generate a cost
|
||||
std::set<LLUUID> mObjectList;
|
||||
//During fetchCosts we move object into a the pending set to signify that
|
||||
//a fetch has been instigated.
|
||||
std::set<LLUUID> mPendingObjectQuota;
|
||||
typedef std::set<LLUUID>::iterator IDIt;
|
||||
};
|
||||
//===============================================================================
|
||||
|
||||
#endif // LLACCOUNTINGQUOTAMANAGER
|
||||
#endif // LLACCOUNTINGCOSTMANAGER
|
||||
|
||||
@@ -1,281 +0,0 @@
|
||||
/**
|
||||
* @file LLAccountingQuotaManager.cpp
|
||||
* @ Handles the setting and accessing for costs associated with mesh
|
||||
*
|
||||
* $LicenseInfo:firstyear=2001&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2011, 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"
|
||||
#if MESH_ENABLED
|
||||
#include "llaccountingquotamanager.h"
|
||||
#include "llagent.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "llviewerobject.h"
|
||||
#include "llviewerobjectlist.h"
|
||||
#include "llviewerparcelmgr.h"
|
||||
#include "llparcel.h"
|
||||
|
||||
//===============================================================================
|
||||
LLAccountingQuotaManager::LLAccountingQuotaManager()
|
||||
{
|
||||
}
|
||||
//===============================================================================
|
||||
class LLAccountingQuotaResponder : public LLCurl::Responder
|
||||
{
|
||||
public:
|
||||
LLAccountingQuotaResponder( const LLSD& objectIDs )
|
||||
: mObjectIDs( objectIDs )
|
||||
{
|
||||
}
|
||||
|
||||
void clearPendingRequests ( void )
|
||||
{
|
||||
for ( LLSD::array_iterator iter = mObjectIDs.beginArray(); iter != mObjectIDs.endArray(); ++iter )
|
||||
{
|
||||
LLAccountingQuotaManager::getInstance()->removePendingObjectQuota( iter->asUUID() );
|
||||
}
|
||||
}
|
||||
|
||||
void error( U32 statusNum, const std::string& reason )
|
||||
{
|
||||
llwarns << "Transport error "<<reason<<llendl;
|
||||
//prep#do we really want to remove all because of one failure - verify
|
||||
clearPendingRequests();
|
||||
}
|
||||
|
||||
void result( const LLSD& content )
|
||||
{
|
||||
if ( !content.isMap() || content.has("error") )
|
||||
{
|
||||
llwarns << "Error on fetched data"<< llendl;
|
||||
//prep#do we really want to remove all because of one failure - verify
|
||||
clearPendingRequests();
|
||||
return;
|
||||
}
|
||||
|
||||
//Differentiate what the incoming caps could be from the data
|
||||
bool containsParcel = content.has("parcel");
|
||||
bool containsSelection = content.has("selected");
|
||||
|
||||
//Loop over the stored object ids checking against the incoming data
|
||||
for ( LLSD::array_iterator iter = mObjectIDs.beginArray(); iter != mObjectIDs.endArray(); ++iter )
|
||||
{
|
||||
LLUUID objectID = iter->asUUID();
|
||||
|
||||
LLAccountingQuotaManager::getInstance()->removePendingObjectQuota( objectID );
|
||||
|
||||
if ( containsParcel )
|
||||
{
|
||||
//Typically should be one
|
||||
S32 dataCount = content["parcel"].size();
|
||||
for(S32 i = 0; i < dataCount; i++)
|
||||
{
|
||||
//prep#todo verify that this is safe, otherwise just add a bool
|
||||
LLUUID parcelId;
|
||||
//S32 parcelOwner = 0;
|
||||
if ( content["parcel"][i].has("parcel_id") )
|
||||
{
|
||||
parcelId = content["parcel"][i]["parcel_id"].asUUID();
|
||||
}
|
||||
|
||||
//if ( content["parcel"][i].has("parcel_owner") )
|
||||
//{
|
||||
// parcelOwner = content["parcel"][i]["parcel_owner"].asInteger();
|
||||
//}
|
||||
|
||||
F32 ownerRenderCost = 0;
|
||||
F32 ownerPhysicsCost = 0;
|
||||
F32 ownerNetworkCost = 0;
|
||||
F32 ownerSimulationCost = 0;
|
||||
|
||||
F32 groupRenderCost = 0;
|
||||
F32 groupPhysicsCost = 0;
|
||||
F32 groupNetworkCost = 0;
|
||||
F32 groupSimulationCost = 0;
|
||||
|
||||
F32 otherRenderCost = 0;
|
||||
F32 otherPhysicsCost = 0;
|
||||
F32 otherNetworkCost = 0;
|
||||
F32 otherSimulationCost = 0;
|
||||
|
||||
F32 tempRenderCost = 0;
|
||||
F32 tempPhysicsCost = 0;
|
||||
F32 tempNetworkCost = 0;
|
||||
F32 tempSimulationCost = 0;
|
||||
|
||||
F32 selectedRenderCost = 0;
|
||||
F32 selectedPhysicsCost = 0;
|
||||
F32 selectedNetworkCost = 0;
|
||||
F32 selectedSimulationCost = 0;
|
||||
|
||||
F32 parcelCapacity = 0;
|
||||
|
||||
if ( content["parcel"][i].has("capacity") )
|
||||
{
|
||||
parcelCapacity = content["parcel"][i].has("capacity");
|
||||
}
|
||||
|
||||
if ( content["parcel"][i].has("owner") )
|
||||
{
|
||||
ownerRenderCost = content["parcel"][i]["owner"]["rendering"].asReal();
|
||||
ownerPhysicsCost = content["parcel"][i]["owner"]["physics"].asReal();
|
||||
ownerNetworkCost = content["parcel"][i]["owner"]["streaming"].asReal();
|
||||
ownerSimulationCost = content["parcel"][i]["owner"]["simulation"].asReal();
|
||||
}
|
||||
|
||||
if ( content["parcel"][i].has("group") )
|
||||
{
|
||||
groupRenderCost = content["parcel"][i]["group"]["rendering"].asReal();
|
||||
groupPhysicsCost = content["parcel"][i]["group"]["physics"].asReal();
|
||||
groupNetworkCost = content["parcel"][i]["group"]["streaming"].asReal();
|
||||
groupSimulationCost = content["parcel"][i]["group"]["simulation"].asReal();
|
||||
|
||||
}
|
||||
if ( content["parcel"][i].has("other") )
|
||||
{
|
||||
otherRenderCost = content["parcel"][i]["other"]["rendering"].asReal();
|
||||
otherPhysicsCost = content["parcel"][i]["other"]["physics"].asReal();
|
||||
otherNetworkCost = content["parcel"][i]["other"]["streaming"].asReal();
|
||||
otherSimulationCost = content["parcel"][i]["other"]["simulation"].asReal();
|
||||
}
|
||||
|
||||
if ( content["parcel"][i].has("temp") )
|
||||
{
|
||||
tempRenderCost = content["parcel"][i]["total"]["rendering"].asReal();
|
||||
tempPhysicsCost = content["parcel"][i]["total"]["physics"].asReal();
|
||||
tempNetworkCost = content["parcel"][i]["total"]["streaming"].asReal();
|
||||
tempSimulationCost = content["parcel"][i]["total"]["simulation"].asReal();
|
||||
}
|
||||
|
||||
if ( content["parcel"][i].has("selected") )
|
||||
{
|
||||
selectedRenderCost = content["parcel"][i]["total"]["rendering"].asReal();
|
||||
selectedPhysicsCost = content["parcel"][i]["total"]["physics"].asReal();
|
||||
selectedNetworkCost = content["parcel"][i]["total"]["streaming"].asReal();
|
||||
selectedSimulationCost = content["parcel"][i]["total"]["simulation"].asReal();
|
||||
}
|
||||
|
||||
ParcelQuota parcelQuota( ownerRenderCost, ownerPhysicsCost, ownerNetworkCost, ownerSimulationCost,
|
||||
groupRenderCost, groupPhysicsCost, groupNetworkCost, groupSimulationCost,
|
||||
otherRenderCost, otherPhysicsCost, otherNetworkCost, otherSimulationCost,
|
||||
tempRenderCost, tempPhysicsCost, tempNetworkCost, tempSimulationCost,
|
||||
selectedRenderCost, selectedPhysicsCost, selectedNetworkCost, selectedSimulationCost,
|
||||
parcelCapacity );
|
||||
//Update the Parcel
|
||||
LLParcel* pParcel = LLViewerParcelMgr::getInstance()->getParcelSelection()->getParcel();
|
||||
if ( pParcel )
|
||||
{
|
||||
pParcel->updateQuota( objectID, parcelQuota );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if ( containsSelection )
|
||||
{
|
||||
S32 dataCount = content["selected"].size();
|
||||
for(S32 i = 0; i < dataCount; i++)
|
||||
{
|
||||
|
||||
F32 renderCost = 0;
|
||||
F32 physicsCost = 0;
|
||||
F32 networkCost = 0;
|
||||
F32 simulationCost = 0;
|
||||
|
||||
LLUUID objectId;
|
||||
|
||||
objectId = content["selected"][i]["local_id"].asUUID();
|
||||
renderCost = content["selected"][i]["rendering"].asReal();
|
||||
physicsCost = content["selected"][i]["physics"].asReal();
|
||||
networkCost = content["selected"][i]["streaming"].asReal();
|
||||
simulationCost = content["selected"][i]["simulation"].asReal();
|
||||
|
||||
SelectionQuota selectionQuota( objectId, renderCost, physicsCost, networkCost, simulationCost );
|
||||
|
||||
//Update the objects
|
||||
gObjectList.updateQuota( objectId, selectionQuota );
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//Nothing in string
|
||||
LLAccountingQuotaManager::getInstance()->removePendingObjectQuota( objectID );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
//List of posted objects
|
||||
LLSD mObjectIDs;
|
||||
};
|
||||
//===============================================================================
|
||||
void LLAccountingQuotaManager::fetchQuotas( const std::string& url )
|
||||
{
|
||||
// Invoking system must have already determined capability availability
|
||||
if ( !url.empty() )
|
||||
{
|
||||
LLSD objectList;
|
||||
U32 objectIndex = 0;
|
||||
IDIt IDIter = mUpdateObjectQuota.begin();
|
||||
IDIt IDIterEnd = mUpdateObjectQuota.end();
|
||||
|
||||
for ( ; IDIter != IDIterEnd; ++IDIter )
|
||||
{
|
||||
// Check to see if a request for this object has already been made.
|
||||
if ( mPendingObjectQuota.find( *IDIter ) == mPendingObjectQuota.end() )
|
||||
{
|
||||
mPendingObjectQuota.insert( *IDIter );
|
||||
objectList[objectIndex++] = *IDIter;
|
||||
}
|
||||
}
|
||||
|
||||
mUpdateObjectQuota.clear();
|
||||
|
||||
//Post results
|
||||
if ( objectList.size() > 0 )
|
||||
{
|
||||
LLSD dataToPost = LLSD::emptyMap();
|
||||
dataToPost["object_ids"] = objectList;
|
||||
LLHTTPClient::post( url, dataToPost, new LLAccountingQuotaResponder( objectList ));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//url was empty - warn & continue
|
||||
llwarns<<"Supplied url is empty "<<llendl;
|
||||
mUpdateObjectQuota.clear();
|
||||
mPendingObjectQuota.clear();
|
||||
}
|
||||
}
|
||||
//===============================================================================
|
||||
void LLAccountingQuotaManager::updateObjectCost( const LLUUID& objectID )
|
||||
{
|
||||
mUpdateObjectQuota.insert( objectID );
|
||||
}
|
||||
//===============================================================================
|
||||
void LLAccountingQuotaManager::removePendingObjectQuota( const LLUUID& objectID )
|
||||
{
|
||||
mPendingObjectQuota.erase( objectID );
|
||||
}
|
||||
//===============================================================================
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
@@ -82,7 +82,6 @@
|
||||
#include "llviewerjoystick.h"
|
||||
#include "lluictrlfactory.h"
|
||||
#if MESH_ENABLED
|
||||
#include "llaccountingquotamanager.h"
|
||||
#include "llmeshrepository.h"
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1482,6 +1482,8 @@ void LLMeshUploadThread::wholeModelToLLSD(LLSD& dest, bool include_textures)
|
||||
|
||||
void LLMeshUploadThread::generateHulls()
|
||||
{
|
||||
bool has_valid_requests = false ;
|
||||
|
||||
for (instance_map::iterator iter = mInstance.begin(); iter != mInstance.end(); ++iter)
|
||||
{
|
||||
LLMeshUploadData data;
|
||||
@@ -1501,6 +1503,10 @@ void LLMeshUploadThread::generateHulls()
|
||||
{
|
||||
physics = data.mModel[LLModel::LOD_PHYSICS];
|
||||
}
|
||||
else if (data.mModel[LLModel::LOD_LOW].notNull())
|
||||
{
|
||||
physics = data.mModel[LLModel::LOD_LOW];
|
||||
}
|
||||
else if (data.mModel[LLModel::LOD_MEDIUM].notNull())
|
||||
{
|
||||
physics = data.mModel[LLModel::LOD_MEDIUM];
|
||||
@@ -1516,13 +1522,17 @@ void LLMeshUploadThread::generateHulls()
|
||||
if(request->isValid())
|
||||
{
|
||||
gMeshRepo.mDecompThread->submitRequest(request);
|
||||
}
|
||||
has_valid_requests = true ;
|
||||
}
|
||||
}
|
||||
|
||||
while (!mPhysicsComplete)
|
||||
|
||||
if(has_valid_requests)
|
||||
{
|
||||
while (!mPhysicsComplete)
|
||||
{
|
||||
apr_sleep(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLMeshUploadThread::doWholeModelUpload()
|
||||
|
||||
@@ -5627,10 +5627,4 @@ public:
|
||||
LLHTTPRegistration<ObjectPhysicsProperties>
|
||||
gHTTPRegistrationObjectPhysicsProperties("/message/ObjectPhysicsProperties");
|
||||
|
||||
|
||||
void LLViewerObject::updateQuota( const SelectionQuota& quota )
|
||||
{
|
||||
//update quotas
|
||||
mSelectionQuota = quota;
|
||||
}
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
@@ -49,9 +49,6 @@
|
||||
#include "v3dmath.h"
|
||||
#include "v3math.h"
|
||||
#include "llvertexbuffer.h"
|
||||
#if MESH_ENABLED
|
||||
#include "llaccountingquota.h"
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
class LLAgent; // TODO: Get rid of this.
|
||||
class LLAudioSource;
|
||||
@@ -657,11 +654,7 @@ protected:
|
||||
void deleteParticleSource();
|
||||
void setParticleSource(const LLPartSysData& particle_parameters, const LLUUID& owner_id);
|
||||
|
||||
#if MESH_ENABLED
|
||||
public:
|
||||
void updateQuota( const SelectionQuota& quota );
|
||||
const SelectionQuota& getQuota( void ) { return mSelectionQuota; }
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
private:
|
||||
void setNameValueList(const std::string& list); // clears nv pairs and then individually adds \n separated NV pairs from \0 terminated string
|
||||
@@ -724,8 +717,6 @@ protected:
|
||||
F32 mPhysicsCost;
|
||||
F32 mLinksetPhysicsCost;
|
||||
|
||||
SelectionQuota mSelectionQuota;
|
||||
|
||||
bool mCostStale;
|
||||
mutable bool mPhysicsShapeUnknown;
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
@@ -1422,15 +1422,6 @@ void LLViewerObjectList::onObjectCostFetchFailure(const LLUUID& object_id)
|
||||
mPendingObjectCost.erase(object_id);
|
||||
}
|
||||
|
||||
void LLViewerObjectList::updateQuota( const LLUUID& objectId, const SelectionQuota& quota )
|
||||
{
|
||||
LLViewerObject* pVO = findObject( objectId );
|
||||
if ( pVO )
|
||||
{
|
||||
pVO->updateQuota( quota );
|
||||
}
|
||||
}
|
||||
|
||||
void LLViewerObjectList::updatePhysicsFlags(const LLViewerObject* object)
|
||||
{
|
||||
mStalePhysicsFlags.insert(object->getID());
|
||||
|
||||
@@ -112,7 +112,6 @@ public:
|
||||
F32 restitution,
|
||||
F32 gravity_multiplier);
|
||||
|
||||
void updateQuota( const LLUUID& objectId, const SelectionQuota& costs );
|
||||
#endif //MESH_ENABLED
|
||||
|
||||
void shiftObjects(const LLVector3 &offset);
|
||||
|
||||
@@ -101,6 +101,8 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
void buildCapabilityNames(LLSD& capabilityNames);
|
||||
|
||||
// The surfaces and other layers
|
||||
LLSurface* mLandp;
|
||||
|
||||
@@ -1480,6 +1482,82 @@ void LLViewerRegion::unpackRegionHandshake()
|
||||
msg->sendReliable(host);
|
||||
}
|
||||
|
||||
|
||||
void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
|
||||
{
|
||||
//capabilityNames.append("AttachmentResources"); //Script limits (llfloaterscriptlimits.cpp)
|
||||
//capabilityNames.append("AvatarPickerSearch"); //Display name/SLID lookup (llfloateravatarpicker.cpp)
|
||||
capabilityNames.append("ChatSessionRequest");
|
||||
capabilityNames.append("CopyInventoryFromNotecard");
|
||||
capabilityNames.append("DispatchRegionInfo");
|
||||
capabilityNames.append("EstateChangeInfo");
|
||||
capabilityNames.append("EventQueueGet");
|
||||
/*capabilityNames.append("EnvironmentSettings");
|
||||
capabilityNames.append("ObjectMedia");
|
||||
capabilityNames.append("ObjectMediaNavigate");*/
|
||||
|
||||
if (false)//gSavedSettings.getBOOL("UseHTTPInventory")) //Caps suffixed with 2 by LL. Don't update until rest of fetch system is updated first.
|
||||
{
|
||||
capabilityNames.append("FetchLib");
|
||||
capabilityNames.append("FetchLibDescendents");
|
||||
capabilityNames.append("FetchInventory");
|
||||
capabilityNames.append("FetchInventoryDescendents");
|
||||
}
|
||||
|
||||
capabilityNames.append("GetDisplayNames");
|
||||
capabilityNames.append("GetTexture");
|
||||
#if MESH_ENABLED
|
||||
capabilityNames.append("GetMesh");
|
||||
capabilityNames.append("GetObjectCost");
|
||||
capabilityNames.append("GetObjectPhysicsData");
|
||||
#endif //MESH_ENABLED
|
||||
capabilityNames.append("GroupProposalBallot");
|
||||
|
||||
capabilityNames.append("HomeLocation");
|
||||
//capabilityNames.append("LandResources"); //Script limits (llfloaterscriptlimits.cpp)
|
||||
capabilityNames.append("MapLayer");
|
||||
capabilityNames.append("MapLayerGod");
|
||||
#if MESH_IMPORT
|
||||
capabilityNames.append("MeshUploadFlag");
|
||||
#endif //MESH_IMPORT
|
||||
capabilityNames.append("NewFileAgentInventory");
|
||||
capabilityNames.append("ParcelPropertiesUpdate");
|
||||
capabilityNames.append("ParcelMediaURLFilterList");
|
||||
capabilityNames.append("ParcelNavigateMedia");
|
||||
capabilityNames.append("ParcelVoiceInfoRequest");
|
||||
capabilityNames.append("ProductInfoRequest");
|
||||
capabilityNames.append("ProvisionVoiceAccountRequest");
|
||||
capabilityNames.append("RemoteParcelRequest");
|
||||
capabilityNames.append("RequestTextureDownload");
|
||||
capabilityNames.append("ResourceCostSelected"); //Unreferenced?
|
||||
capabilityNames.append("SearchStatRequest");
|
||||
capabilityNames.append("SearchStatTracking");
|
||||
capabilityNames.append("SendPostcard");
|
||||
capabilityNames.append("SendUserReport");
|
||||
capabilityNames.append("SendUserReportWithScreenshot");
|
||||
capabilityNames.append("ServerReleaseNotes");
|
||||
//capabilityNames.append("SimConsole");
|
||||
capabilityNames.append("SimulatorFeatures");
|
||||
capabilityNames.append("SetDisplayName");
|
||||
//capabilityNames.append("SimConsoleAsync");
|
||||
capabilityNames.append("StartGroupProposal");
|
||||
capabilityNames.append("TextureStats");
|
||||
capabilityNames.append("UntrustedSimulatorMessage");
|
||||
capabilityNames.append("UpdateAgentInformation");
|
||||
capabilityNames.append("UpdateAgentLanguage");
|
||||
capabilityNames.append("UpdateGestureAgentInventory");
|
||||
capabilityNames.append("UpdateNotecardAgentInventory");
|
||||
capabilityNames.append("UpdateScriptAgent");
|
||||
capabilityNames.append("UpdateGestureTaskInventory");
|
||||
capabilityNames.append("UpdateNotecardTaskInventory");
|
||||
capabilityNames.append("UpdateScriptTask");
|
||||
capabilityNames.append("UploadBakedTexture");
|
||||
//capabilityNames.append("ViewerMetrics");
|
||||
capabilityNames.append("ViewerStartAuction");
|
||||
capabilityNames.append("ViewerStats");
|
||||
// Please add new capabilities alphabetically to reduce
|
||||
// merge conflicts.
|
||||
}
|
||||
void LLViewerRegion::setSeedCapability(const std::string& url)
|
||||
{
|
||||
if (getCapability("Seed") == url)
|
||||
@@ -1495,63 +1573,9 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
|
||||
setCapability("Seed", url);
|
||||
|
||||
LLSD capabilityNames = LLSD::emptyArray();
|
||||
capabilityNames.append("ChatSessionRequest");
|
||||
capabilityNames.append("CopyInventoryFromNotecard");
|
||||
capabilityNames.append("DispatchRegionInfo");
|
||||
capabilityNames.append("EstateChangeInfo");
|
||||
capabilityNames.append("EventQueueGet");
|
||||
if (false)//gSavedSettings.getBOOL("UseHTTPInventory")) //Caps suffixed with 2 by LL. Don't update until rest of fetch system is updated first.
|
||||
{
|
||||
capabilityNames.append("FetchLib");
|
||||
capabilityNames.append("FetchLibDescendents");
|
||||
capabilityNames.append("FetchInventory");
|
||||
capabilityNames.append("FetchInventoryDescendents");
|
||||
}
|
||||
capabilityNames.append("GetDisplayNames");
|
||||
capabilityNames.append("GetTexture");
|
||||
#if MESH_ENABLED
|
||||
capabilityNames.append("GetMesh");
|
||||
capabilityNames.append("GetObjectCost");
|
||||
capabilityNames.append("GetObjectPhysicsData");
|
||||
#endif //MESH_ENABLED
|
||||
capabilityNames.append("GroupProposalBallot");
|
||||
|
||||
capabilityNames.append("HomeLocation");
|
||||
capabilityNames.append("MapLayer");
|
||||
capabilityNames.append("MapLayerGod");
|
||||
capabilityNames.append("NewFileAgentInventory");
|
||||
capabilityNames.append("ParcelPropertiesUpdate");
|
||||
capabilityNames.append("ParcelMediaURLFilterList");
|
||||
capabilityNames.append("ParcelNavigateMedia");
|
||||
capabilityNames.append("ParcelVoiceInfoRequest");
|
||||
capabilityNames.append("ProductInfoRequest");
|
||||
capabilityNames.append("ProvisionVoiceAccountRequest");
|
||||
capabilityNames.append("RemoteParcelRequest");
|
||||
capabilityNames.append("RequestTextureDownload");
|
||||
capabilityNames.append("SearchStatRequest");
|
||||
capabilityNames.append("SearchStatTracking");
|
||||
capabilityNames.append("SendPostcard");
|
||||
capabilityNames.append("SendUserReport");
|
||||
capabilityNames.append("SendUserReportWithScreenshot");
|
||||
capabilityNames.append("ServerReleaseNotes");
|
||||
capabilityNames.append("SimulatorFeatures");
|
||||
capabilityNames.append("SetDisplayName");
|
||||
capabilityNames.append("StartGroupProposal");
|
||||
capabilityNames.append("TextureStats");
|
||||
capabilityNames.append("UntrustedSimulatorMessage");
|
||||
capabilityNames.append("UpdateAgentInformation");
|
||||
capabilityNames.append("UpdateAgentLanguage");
|
||||
capabilityNames.append("UpdateGestureAgentInventory");
|
||||
capabilityNames.append("UpdateNotecardAgentInventory");
|
||||
capabilityNames.append("UpdateScriptAgent");
|
||||
capabilityNames.append("UpdateGestureTaskInventory");
|
||||
capabilityNames.append("UpdateNotecardTaskInventory");
|
||||
capabilityNames.append("UpdateScriptTask");
|
||||
capabilityNames.append("UploadBakedTexture");
|
||||
capabilityNames.append("ViewerStartAuction");
|
||||
capabilityNames.append("ViewerStats");
|
||||
// Please add new capabilities alphabetically to reduce
|
||||
// merge conflicts.
|
||||
|
||||
mImpl->buildCapabilityNames(capabilityNames);
|
||||
|
||||
|
||||
llinfos << "posting to seed " << url << llendl;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user