diff options
author | Brian Pane <brianp@apache.org> | 2005-10-24 04:39:49 +0200 |
---|---|---|
committer | Brian Pane <brianp@apache.org> | 2005-10-24 04:39:49 +0200 |
commit | 158559eacb9ecea465464c7ab6e7c4713731c7e9 (patch) | |
tree | a636bae93696a78ee2b742db559e12d2a5b2a37a /include | |
parent | A complete rewrite of support/logresolve.c: (diff) | |
download | apache2-158559eacb9ecea465464c7ab6e7c4713731c7e9.tar.xz apache2-158559eacb9ecea465464c7ab6e7c4713731c7e9.zip |
Redesign of request cleanup and logging to use End-Of-Request bucket
(backport from async-dev branch to 2.3 trunk)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@327925 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'include')
-rw-r--r-- | include/http_request.h | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/include/http_request.h b/include/http_request.h index 240559cea1..c76219bb43 100644 --- a/include/http_request.h +++ b/include/http_request.h @@ -237,12 +237,21 @@ AP_DECLARE(void) ap_allow_standard_methods(request_rec *r, int reset, ...); #ifdef CORE_PRIVATE /** - * Process a top-level request from a client + * Process a top-level request from a client, and synchronously write + * the response to the client * @param r The current request */ void ap_process_request(request_rec *); /** + * Process a top-level request from a client, allowing some or all of + * the response to remain buffered in the core output filter for later, + * asynchronous write completion + * @param r The current request + */ +void ap_process_async_request(request_rec *); + +/** * Kill the current request * @param type Why the request is dieing * @param r The current request @@ -354,6 +363,36 @@ AP_DECLARE(int) ap_location_walk(request_rec *r); AP_DECLARE(int) ap_directory_walk(request_rec *r); AP_DECLARE(int) ap_file_walk(request_rec *r); +/** End Of REQUEST (EOR) bucket */ +AP_DECLARE_DATA extern const apr_bucket_type_t ap_bucket_type_eor; + +/** + * Determine if a bucket is an End Of REQUEST (EOR) bucket + * @param e The bucket to inspect + * @return true or false + */ +#define AP_BUCKET_IS_EOR(e) (e->type == &ap_bucket_type_eor) + +/** + * Make the bucket passed in an End Of REQUEST (EOR) bucket + * @param b The bucket to make into an EOR bucket + * @param r The request to destroy when this bucket is destroyed + * @return The new bucket, or NULL if allocation failed + */ +AP_DECLARE(apr_bucket *) ap_bucket_eor_make(apr_bucket *b, request_rec *r); + +/** + * Create a bucket referring to an End Of REQUEST (EOR). This bucket + * holds a pointer to the request_rec, so that the request can be + * destroyed right after all of the output has been sent to the client. + * + * @param list The freelist from which this bucket should be allocated + * @param r The request to destroy when this bucket is destroyed + * @return The new bucket, or NULL if allocation failed + */ +AP_DECLARE(apr_bucket *) ap_bucket_eor_create(apr_bucket_alloc_t *list, + request_rec *r); + #ifdef __cplusplus } #endif |