home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / CMCD1104.ISO / Software / Complet / Apache / apache_2.0.52-win32-x86-no_ssl.msi / Data.Cab / F277262_http_connection.h < prev    next >
C/C++ Source or Header  |  2004-03-08  |  5KB  |  139 lines

  1. /* Copyright 1999-2004 The Apache Software Foundation
  2.  *
  3.  * Licensed under the Apache License, Version 2.0 (the "License");
  4.  * you may not use this file except in compliance with the License.
  5.  * You may obtain a copy of the License at
  6.  *
  7.  *     http://www.apache.org/licenses/LICENSE-2.0
  8.  *
  9.  * Unless required by applicable law or agreed to in writing, software
  10.  * distributed under the License is distributed on an "AS IS" BASIS,
  11.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12.  * See the License for the specific language governing permissions and
  13.  * limitations under the License.
  14.  */
  15.  
  16. #ifndef APACHE_HTTP_CONNECTION_H
  17. #define APACHE_HTTP_CONNECTION_H
  18.  
  19. #include "apr_hooks.h"
  20. #include "apr_network_io.h"
  21. #include "apr_buckets.h"
  22.  
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26.  
  27. /**
  28.  * @package Apache connection library
  29.  */
  30. #ifdef CORE_PRIVATE
  31. /**
  32.  * This is the protocol module driver.  This calls all of the
  33.  * pre-connection and connection hooks for all protocol modules.
  34.  * @param c The connection on which the request is read
  35.  * @param csd The mechanism on which this connection is to be read.  
  36.  *            Most times this will be a socket, but it is up to the module
  37.  *            that accepts the request to determine the exact type.
  38.  * @deffunc void ap_process_connection(conn_rec *c, void *csd)
  39.  */
  40. AP_CORE_DECLARE(void) ap_process_connection(conn_rec *c, void *csd);
  41.  
  42. AP_CORE_DECLARE(void) ap_flush_conn(conn_rec *c);
  43.  
  44. /**
  45.  * This function is responsible for the following cases:
  46.  * <pre>
  47.  * we now proceed to read from the client until we get EOF, or until
  48.  * MAX_SECS_TO_LINGER has passed.  the reasons for doing this are
  49.  * documented in a draft:
  50.  *
  51.  * http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt
  52.  *
  53.  * in a nutshell -- if we don't make this effort we risk causing
  54.  * TCP RST packets to be sent which can tear down a connection before
  55.  * all the response data has been sent to the client.
  56.  * </pre>
  57.  * @param c The connection we are closing
  58.  */
  59. AP_DECLARE(void) ap_lingering_close(conn_rec *c);
  60. #endif
  61.  
  62.   /* Hooks */
  63. /**
  64.  * create_connection is a RUN_FIRST hook which allows modules to create 
  65.  * connections. In general, you should not install filters with the 
  66.  * create_connection hook. If you require vhost configuration information 
  67.  * to make filter installation decisions, you must use the pre_connection
  68.  * or install_network_transport hook. This hook should close the connection
  69.  * if it encounters a fatal error condition.
  70.  *
  71.  * @param p The pool from which to allocate the connection record
  72.  * @param csd The socket that has been accepted
  73.  * @param conn_id A unique identifier for this connection.  The ID only
  74.  *                needs to be unique at that time, not forever.
  75.  * @param sbh A handle to scoreboard information for this connection.
  76.  * @return An allocated connection record or NULL.
  77.  */
  78. AP_DECLARE_HOOK(conn_rec *, create_connection,
  79.                 (apr_pool_t *p, server_rec *server, apr_socket_t *csd,
  80.                  long conn_id, void *sbh, apr_bucket_alloc_t *alloc))
  81.    
  82. /**
  83.  * This hook gives protocol modules an opportunity to set everything up
  84.  * before calling the protocol handler.  All pre-connection hooks are
  85.  * run until one returns something other than ok or decline
  86.  * @param c The connection on which the request has been received.
  87.  * @param csd The mechanism on which this connection is to be read.  
  88.  *            Most times this will be a socket, but it is up to the module
  89.  *            that accepts the request to determine the exact type.
  90.  * @return OK or DECLINED
  91.  * @deffunc int ap_run_pre_connection(conn_rec *c, void *csd)
  92.  */
  93. AP_DECLARE_HOOK(int,pre_connection,(conn_rec *c, void *csd))
  94.  
  95. /**
  96.  * This hook implements different protocols.  After a connection has been
  97.  * established, the protocol module must read and serve the request.  This
  98.  * function does that for each protocol module.  The first protocol module
  99.  * to handle the request is the last module run.
  100.  * @param c The connection on which the request has been received.
  101.  * @return OK or DECLINED
  102.  * @deffunc int ap_run_process_connection(conn_rec *c)
  103.  */
  104. AP_DECLARE_HOOK(int,process_connection,(conn_rec *c))
  105.  
  106. /* End Of Connection (EOC) bucket */
  107.  
  108. AP_DECLARE_DATA extern const apr_bucket_type_t ap_bucket_type_eoc;
  109.  
  110. /**
  111.  * Determine if a bucket is an End Of Connection (EOC) bucket
  112.  * @param e The bucket to inspect
  113.  * @return true or false
  114.  */
  115. #define AP_BUCKET_IS_EOC(e)         (e->type == &ap_bucket_type_eoc)
  116.  
  117. /**
  118.  * Make the bucket passed in an End Of Connection (EOC) bucket
  119.  * @param b The bucket to make into an EOC bucket
  120.  * @return The new bucket, or NULL if allocation failed
  121.  * @deffunc apr_bucket *ap_bucket_eoc_make(apr_bucket *b)
  122.  */
  123. AP_DECLARE(apr_bucket *) ap_bucket_eoc_make(apr_bucket *b);
  124.  
  125. /**
  126.  * Create a bucket referring to an End Of Connection (EOC). This indicates
  127.  * that the connection will be closed.
  128.  * @param list The freelist from which this bucket should be allocated
  129.  * @return The new bucket, or NULL if allocation failed
  130.  * @deffunc apr_bucket *ap_bucket_eoc_create(apr_bucket_alloc_t *list)
  131.  */
  132. AP_DECLARE(apr_bucket *) ap_bucket_eoc_create(apr_bucket_alloc_t *list);
  133.  
  134. #ifdef __cplusplus
  135. }
  136. #endif
  137.  
  138. #endif    /* !APACHE_HTTP_REQUEST_H */
  139.