summaryrefslogtreecommitdiff
path: root/indra/newview/llappcorehttp.h
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2024-05-14 21:02:28 -0400
committerNat Goodspeed <nat@lindenlab.com>2024-05-14 21:02:28 -0400
commit094dcc07f8c1d90ae723dbe60eddacb90a09eae8 (patch)
treee750942e5f22ed677b543bd49509c2a7cdc5ce56 /indra/newview/llappcorehttp.h
parentd4043d3b011c32eb503c43c551872f9c24d7344f (diff)
parent38c2a5bde985a6a8a96d912d432f8bdf7e5b60be (diff)
Merge DRTVWR-591-maint-X to main on promotion of secondlife/viewer #705: Maintenance X
Diffstat (limited to 'indra/newview/llappcorehttp.h')
-rw-r--r--indra/newview/llappcorehttp.h434
1 files changed, 217 insertions, 217 deletions
diff --git a/indra/newview/llappcorehttp.h b/indra/newview/llappcorehttp.h
index 751c498ab0..c02c4a532d 100644
--- a/indra/newview/llappcorehttp.h
+++ b/indra/newview/llappcorehttp.h
@@ -24,8 +24,8 @@
* $/LicenseInfo$
*/
-#ifndef _LL_APP_COREHTTP_H_
-#define _LL_APP_COREHTTP_H_
+#ifndef _LL_APP_COREHTTP_H_
+#define _LL_APP_COREHTTP_H_
#include "httprequest.h"
@@ -41,225 +41,225 @@
class LLAppCoreHttp : public LLCore::HttpHandler
{
public:
- static const long PIPELINING_DEPTH;
-
- typedef LLCore::HttpRequest::policy_t policy_t;
-
- enum EAppPolicy
- {
- /// Catchall policy class. Not used yet
- /// but will have a generous concurrency
- /// limit. Deep queueing possible by having
- /// a chatty HTTP user.
- ///
- /// Destination: anywhere
- /// Protocol: http: or https:
- /// Transfer size: KB-MB
- /// Long poll: no
- /// Concurrency: high
- /// Request rate: unknown
- /// Pipelined: no
- AP_DEFAULT,
-
- /// Texture fetching policy class. Used to
- /// download textures via capability or SSA
- /// baking service. Deep queueing of requests.
- /// Do not share. GET requests only.
- ///
- /// Destination: simhost:12046 & {bake-texture,cdn}:80
- /// Protocol: http:
- /// Transfer size: KB-MB
- /// Long poll: no
- /// Concurrency: high
- /// Request rate: high
- /// Pipelined: yes
- AP_TEXTURE,
-
- /// Legacy mesh fetching policy class. Used to
- /// download textures via 'GetMesh' capability.
- /// To be deprecated. Do not share.
- ///
- /// Destination: simhost:12046
- /// Protocol: http:
- /// Transfer size: KB-MB
- /// Long poll: no
- /// Concurrency: dangerously high
- /// Request rate: high
- /// Pipelined: no
- AP_MESH1,
-
- /// New mesh fetching policy class. Used to
- /// download textures via 'GetMesh2' capability.
- /// Used when fetch request (typically one LOD)
- /// is 'small', currently defined as 2MB.
- /// Very deeply queued. Do not share. GET
- /// requests only.
- ///
- /// Destination: simhost:12046 & cdn:80
- /// Protocol: http:
- /// Transfer size: KB-MB
- /// Long poll: no
- /// Concurrency: high
- /// Request rate: high
- /// Pipelined: yes
- AP_MESH2,
-
- /// Large mesh fetching policy class. Used to
- /// download textures via 'GetMesh' or 'GetMesh2'
- /// capability. Used when fetch request
- /// is not small to avoid head-of-line problem
- /// when large requests block a sequence of small,
- /// fast requests. Can be shared with similar
- /// traffic that can wait for longish stalls
- /// (default timeout 600S).
- ///
- /// Destination: simhost:12046 & cdn:80
- /// Protocol: http:
- /// Transfer size: MB
- /// Long poll: no
- /// Concurrency: low
- /// Request rate: low
- /// Pipelined: no
- AP_LARGE_MESH,
-
- /// Asset upload policy class. Used to store
- /// assets (mesh only at the moment) via
- /// changeable URL. Responses may take some
- /// time (default timeout 240S).
- ///
- /// Destination: simhost:12043
- /// Protocol: https:
- /// Transfer size: KB-MB
- /// Long poll: no
- /// Concurrency: low
- /// Request rate: low
- /// Pipelined: no
- AP_UPLOADS,
-
- /// Long-poll-type HTTP requests. Not
- /// bound by a connection limit. Requests
- /// will typically hang around for a long
- /// time (~30S). Only shareable with other
- /// long-poll requests.
- ///
- /// Destination: simhost:12043
- /// Protocol: https:
- /// Transfer size: KB
- /// Long poll: yes
- /// Concurrency: unlimited but low in practice
- /// Request rate: low
- /// Pipelined: no
- AP_LONG_POLL,
-
- /// Inventory operations (really Capabilities-
- /// related operations). Mix of high-priority
- /// and low-priority operations.
- ///
- /// Destination: simhost:12043
- /// Protocol: https:
- /// Transfer size: KB-MB
- /// Long poll: no
- /// Concurrency: high
- /// Request rate: high
- /// Pipelined: no
- AP_INVENTORY,
- AP_REPORTING = AP_INVENTORY, // Piggy-back on inventory
-
- /// Material resource requests and puts.
- ///
- /// Destination: simhost:12043
- /// Protocol: https:
- /// Transfer size: KB
- /// Long poll: no
- /// Concurrency: low
- /// Request rate: low
- /// Pipelined: no
- AP_MATERIALS,
-
- /// Appearance resource requests and puts.
- ///
- /// Destination: simhost:12043
- /// Protocol: https:
- /// Transfer size: KB
- /// Long poll: no
- /// Concurrency: mid
- /// Request rate: low
- /// Pipelined: yes
- AP_AGENT,
-
- AP_COUNT // Must be last
- };
-
+ static const long PIPELINING_DEPTH;
+
+ typedef LLCore::HttpRequest::policy_t policy_t;
+
+ enum EAppPolicy
+ {
+ /// Catchall policy class. Not used yet
+ /// but will have a generous concurrency
+ /// limit. Deep queueing possible by having
+ /// a chatty HTTP user.
+ ///
+ /// Destination: anywhere
+ /// Protocol: http: or https:
+ /// Transfer size: KB-MB
+ /// Long poll: no
+ /// Concurrency: high
+ /// Request rate: unknown
+ /// Pipelined: no
+ AP_DEFAULT,
+
+ /// Texture fetching policy class. Used to
+ /// download textures via capability or SSA
+ /// baking service. Deep queueing of requests.
+ /// Do not share. GET requests only.
+ ///
+ /// Destination: simhost:12046 & {bake-texture,cdn}:80
+ /// Protocol: http:
+ /// Transfer size: KB-MB
+ /// Long poll: no
+ /// Concurrency: high
+ /// Request rate: high
+ /// Pipelined: yes
+ AP_TEXTURE,
+
+ /// Legacy mesh fetching policy class. Used to
+ /// download textures via 'GetMesh' capability.
+ /// To be deprecated. Do not share.
+ ///
+ /// Destination: simhost:12046
+ /// Protocol: http:
+ /// Transfer size: KB-MB
+ /// Long poll: no
+ /// Concurrency: dangerously high
+ /// Request rate: high
+ /// Pipelined: no
+ AP_MESH1,
+
+ /// New mesh fetching policy class. Used to
+ /// download textures via 'GetMesh2' capability.
+ /// Used when fetch request (typically one LOD)
+ /// is 'small', currently defined as 2MB.
+ /// Very deeply queued. Do not share. GET
+ /// requests only.
+ ///
+ /// Destination: simhost:12046 & cdn:80
+ /// Protocol: http:
+ /// Transfer size: KB-MB
+ /// Long poll: no
+ /// Concurrency: high
+ /// Request rate: high
+ /// Pipelined: yes
+ AP_MESH2,
+
+ /// Large mesh fetching policy class. Used to
+ /// download textures via 'GetMesh' or 'GetMesh2'
+ /// capability. Used when fetch request
+ /// is not small to avoid head-of-line problem
+ /// when large requests block a sequence of small,
+ /// fast requests. Can be shared with similar
+ /// traffic that can wait for longish stalls
+ /// (default timeout 600S).
+ ///
+ /// Destination: simhost:12046 & cdn:80
+ /// Protocol: http:
+ /// Transfer size: MB
+ /// Long poll: no
+ /// Concurrency: low
+ /// Request rate: low
+ /// Pipelined: no
+ AP_LARGE_MESH,
+
+ /// Asset upload policy class. Used to store
+ /// assets (mesh only at the moment) via
+ /// changeable URL. Responses may take some
+ /// time (default timeout 240S).
+ ///
+ /// Destination: simhost:12043
+ /// Protocol: https:
+ /// Transfer size: KB-MB
+ /// Long poll: no
+ /// Concurrency: low
+ /// Request rate: low
+ /// Pipelined: no
+ AP_UPLOADS,
+
+ /// Long-poll-type HTTP requests. Not
+ /// bound by a connection limit. Requests
+ /// will typically hang around for a long
+ /// time (~30S). Only shareable with other
+ /// long-poll requests.
+ ///
+ /// Destination: simhost:12043
+ /// Protocol: https:
+ /// Transfer size: KB
+ /// Long poll: yes
+ /// Concurrency: unlimited but low in practice
+ /// Request rate: low
+ /// Pipelined: no
+ AP_LONG_POLL,
+
+ /// Inventory operations (really Capabilities-
+ /// related operations). Mix of high-priority
+ /// and low-priority operations.
+ ///
+ /// Destination: simhost:12043
+ /// Protocol: https:
+ /// Transfer size: KB-MB
+ /// Long poll: no
+ /// Concurrency: high
+ /// Request rate: high
+ /// Pipelined: no
+ AP_INVENTORY,
+ AP_REPORTING = AP_INVENTORY, // Piggy-back on inventory
+
+ /// Material resource requests and puts.
+ ///
+ /// Destination: simhost:12043
+ /// Protocol: https:
+ /// Transfer size: KB
+ /// Long poll: no
+ /// Concurrency: low
+ /// Request rate: low
+ /// Pipelined: no
+ AP_MATERIALS,
+
+ /// Appearance resource requests and puts.
+ ///
+ /// Destination: simhost:12043
+ /// Protocol: https:
+ /// Transfer size: KB
+ /// Long poll: no
+ /// Concurrency: mid
+ /// Request rate: low
+ /// Pipelined: yes
+ AP_AGENT,
+
+ AP_COUNT // Must be last
+ };
+
public:
- LLAppCoreHttp();
- ~LLAppCoreHttp();
-
- // Initialize the LLCore::HTTP library creating service classes
- // and starting the servicing thread. Caller is expected to do
- // other initializations (SSL mutex, thread hash function) appropriate
- // for the application.
- void init();
-
- // Request that the servicing thread stop servicing requests,
- // release resource references and stop. Request is asynchronous
- // and @see cleanup() will perform a limited wait loop for this
- // request to stop the thread.
- void requestStop();
-
- // Terminate LLCore::HTTP library services. Caller is expected
- // to have made a best-effort to shutdown the servicing thread
- // by issuing a requestThreadStop() and waiting for completion
- // notification that the stop has completed.
- void cleanup();
-
- // Notification when the stop request is complete.
- virtual void onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response);
-
- // Retrieve a policy class identifier for desired
- // application function.
- policy_t getPolicy(EAppPolicy policy) const
- {
- return mHttpClasses[policy].mPolicy;
- }
-
- // Return whether a policy is using pipelined operations.
- bool isPipelined(EAppPolicy policy) const
- {
- return mHttpClasses[policy].mPipelined;
- }
-
- // Apply initial or new settings from the environment.
- void refreshSettings(bool initial);
-
+ LLAppCoreHttp();
+ ~LLAppCoreHttp();
+
+ // Initialize the LLCore::HTTP library creating service classes
+ // and starting the servicing thread. Caller is expected to do
+ // other initializations (SSL mutex, thread hash function) appropriate
+ // for the application.
+ void init();
+
+ // Request that the servicing thread stop servicing requests,
+ // release resource references and stop. Request is asynchronous
+ // and @see cleanup() will perform a limited wait loop for this
+ // request to stop the thread.
+ void requestStop();
+
+ // Terminate LLCore::HTTP library services. Caller is expected
+ // to have made a best-effort to shutdown the servicing thread
+ // by issuing a requestThreadStop() and waiting for completion
+ // notification that the stop has completed.
+ void cleanup();
+
+ // Notification when the stop request is complete.
+ virtual void onCompleted(LLCore::HttpHandle handle, LLCore::HttpResponse * response);
+
+ // Retrieve a policy class identifier for desired
+ // application function.
+ policy_t getPolicy(EAppPolicy policy) const
+ {
+ return mHttpClasses[policy].mPolicy;
+ }
+
+ // Return whether a policy is using pipelined operations.
+ bool isPipelined(EAppPolicy policy) const
+ {
+ return mHttpClasses[policy].mPipelined;
+ }
+
+ // Apply initial or new settings from the environment.
+ void refreshSettings(bool initial);
+
private:
- static const F64 MAX_THREAD_WAIT_TIME;
-
+ static const F64 MAX_THREAD_WAIT_TIME;
+
private:
- // PODish container for per-class settings and state.
- struct HttpClass
- {
- public:
- HttpClass();
-
- public:
- policy_t mPolicy; // Policy class id for the class
- U32 mConnLimit;
- bool mPipelined;
- boost::signals2::connection mSettingsSignal; // Signal to global setting that affect this class (if any)
- };
-
- LLCore::HttpRequest * mRequest; // Request queue to issue shutdowns
- LLCore::HttpHandle mStopHandle;
- F64 mStopRequested;
- bool mStopped;
- HttpClass mHttpClasses[AP_COUNT];
- bool mPipelined; // Global setting
- boost::signals2::connection mPipelinedSignal; // Signal for 'HttpPipelining' setting
- boost::signals2::connection mSSLNoVerifySignal; // Signal for 'NoVerifySSLCert' setting
-
- static LLCore::HttpStatus sslVerify(const std::string &uri, const LLCore::HttpHandler::ptr_t &handler, void *appdata);
+ // PODish container for per-class settings and state.
+ struct HttpClass
+ {
+ public:
+ HttpClass();
+
+ public:
+ policy_t mPolicy; // Policy class id for the class
+ U32 mConnLimit;
+ bool mPipelined;
+ boost::signals2::connection mSettingsSignal; // Signal to global setting that affect this class (if any)
+ };
+
+ LLCore::HttpRequest * mRequest; // Request queue to issue shutdowns
+ LLCore::HttpHandle mStopHandle;
+ F64 mStopRequested;
+ bool mStopped;
+ HttpClass mHttpClasses[AP_COUNT];
+ bool mPipelined; // Global setting
+ boost::signals2::connection mPipelinedSignal; // Signal for 'HttpPipelining' setting
+ boost::signals2::connection mSSLNoVerifySignal; // Signal for 'NoVerifySSLCert' setting
+
+ static LLCore::HttpStatus sslVerify(const std::string &uri, const LLCore::HttpHandler::ptr_t &handler, void *appdata);
};
-#endif // _LL_APP_COREHTTP_H_
+#endif // _LL_APP_COREHTTP_H_