summaryrefslogtreecommitdiff
path: root/indra/llcorehttp/_httprequestqueue.h
diff options
context:
space:
mode:
authorMonty Brandenberg <monty@lindenlab.com>2012-06-26 12:28:58 -0400
committerMonty Brandenberg <monty@lindenlab.com>2012-06-26 12:28:58 -0400
commite8b0088d1a0c02bfa1f9768dc91fc3df4322adae (patch)
tree336f5484cf97d0538599250c4c405ac28866234c /indra/llcorehttp/_httprequestqueue.h
parente172ec84fa217aae8d1e51c1e0673322c30891fe (diff)
SH-3184/SH-3221 More work on cleanup with better unit test work and more aggressive shutdown of a thread.
Some additional work let me enable a memory check for the clean shutdown case and generally do a better job on other interfaces. Request queue waiters now awake on shutdown and don't sleep once the queue is turned off. Much better semantically for how this will be used.
Diffstat (limited to 'indra/llcorehttp/_httprequestqueue.h')
-rw-r--r--indra/llcorehttp/_httprequestqueue.h30
1 files changed, 27 insertions, 3 deletions
diff --git a/indra/llcorehttp/_httprequestqueue.h b/indra/llcorehttp/_httprequestqueue.h
index e11fd17c90..c9c52b7233 100644
--- a/indra/llcorehttp/_httprequestqueue.h
+++ b/indra/llcorehttp/_httprequestqueue.h
@@ -76,7 +76,7 @@ public:
/// Insert an object at the back of the request queue.
///
/// Caller must provide one refcount to the queue which takes
- /// possession of the count.
+ /// possession of the count on success.
///
/// @return Standard status. On failure, caller
/// must dispose of the operation with
@@ -85,17 +85,41 @@ public:
/// Threading: callable by any thread.
HttpStatus addOp(HttpOperation * op);
- /// Caller acquires reference count on returned operation
+ /// Return the operation on the front of the queue. If
+ /// the queue is empty and @wait is false, call returns
+ /// immediately and a NULL pointer is returned. If true,
+ /// caller will sleep until explicitly woken. Wakeups
+ /// can be spurious and callers must expect NULL pointers
+ /// even if waiting is indicated.
+ ///
+ /// Caller acquires reference count any returned operation
///
/// Threading: callable by any thread.
HttpOperation * fetchOp(bool wait);
+ /// Return all queued requests to caller. The @ops argument
+ /// should be empty when called and will be swap()'d with
+ /// current contents. Handling of the @wait argument is
+ /// identical to @fetchOp.
+ ///
/// Caller acquires reference count on each returned operation
///
/// Threading: callable by any thread.
void fetchAll(bool wait, OpContainer & ops);
- /// Disallow further request queuing
+ /// Wake any sleeping threads. Normal queuing operations
+ /// won't require this but it may be necessary for termination
+ /// requests.
+ ///
+ /// Threading: callable by any thread.
+ void wakeAll();
+
+ /// Disallow further request queuing. Callers to @addOp will
+ /// get a failure status (LLCORE, HE_SHUTTING_DOWN). Callers
+ /// to @fetchAll or @fetchOp will get requests that are on the
+ /// queue but the calls will no longer wait. Instead they'll
+ /// return immediately. Also wakes up all sleepers to send
+ /// them on their way.
///
/// Threading: callable by any thread.
void stopQueue();