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