home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / apache_2.2.8-win32-x86-no_ssl.msi / Data1.cab / _09DC8E008900F18ED52F365C68215E25 < prev    next >
Text File  |  2007-05-09  |  4KB  |  128 lines

  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  ap_listen.h
  19.  * @brief Apache Listeners Library
  20.  *
  21.  * @defgroup APACHE_CORE_LISTEN Apache Listeners Library
  22.  * @ingroup  APACHE_CORE
  23.  * @{
  24.  */
  25.  
  26. #ifndef AP_LISTEN_H
  27. #define AP_LISTEN_H
  28.  
  29. #include "apr_network_io.h"
  30. #include "httpd.h"
  31. #include "http_config.h"
  32.  
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36.  
  37. typedef struct ap_listen_rec ap_listen_rec;
  38. typedef apr_status_t (*accept_function)(void **csd, ap_listen_rec *lr, apr_pool_t *ptrans);
  39.  
  40. /**
  41.  * @brief Apache's listeners record.  
  42.  *
  43.  * These are used in the Multi-Processing Modules
  44.  * to setup all of the sockets for the MPM to listen to and accept on.
  45.  */
  46. struct ap_listen_rec {
  47.     /**
  48.      * The next listener in the list
  49.      */
  50.     ap_listen_rec *next;
  51.     /**
  52.      * The actual socket 
  53.      */
  54.     apr_socket_t *sd;
  55.     /**
  56.      * The sockaddr the socket should bind to
  57.      */
  58.     apr_sockaddr_t *bind_addr;
  59.     /**
  60.      * The accept function for this socket
  61.      */
  62.     accept_function accept_func;
  63.     /**
  64.      * Is this socket currently active 
  65.      */
  66.     int active;
  67.     /**
  68.      * The default protocol for this listening socket.
  69.      */
  70.     const char* protocol;
  71. };
  72.  
  73. /**
  74.  * The global list of ap_listen_rec structures
  75.  */
  76. AP_DECLARE_DATA extern ap_listen_rec *ap_listeners;
  77.  
  78. /**
  79.  * Setup all of the defaults for the listener list
  80.  */
  81. AP_DECLARE(void) ap_listen_pre_config(void);
  82.  
  83. /**
  84.  * Loop through the global ap_listen_rec list and create all of the required
  85.  * sockets.  This executes the listen and bind on the sockets.
  86.  * @param s The global server_rec
  87.  * @return The number of open sockets.
  88.  */ 
  89. AP_DECLARE(int) ap_setup_listeners(server_rec *s);
  90.  
  91. /**
  92.  * Loop through the global ap_listen_rec list and close each of the sockets.
  93.  */
  94. AP_DECLARE_NONSTD(void) ap_close_listeners(void);
  95.  
  96. /* Although these functions are exported from libmain, they are not really
  97.  * public functions.  These functions are actually called while parsing the
  98.  * config file, when one of the LISTEN_COMMANDS directives is read.  These
  99.  * should not ever be called by external modules.  ALL MPMs should include
  100.  * LISTEN_COMMANDS in their command_rec table so that these functions are
  101.  * called.
  102.  */ 
  103. AP_DECLARE_NONSTD(const char *) ap_set_listenbacklog(cmd_parms *cmd, void *dummy, const char *arg);
  104. AP_DECLARE_NONSTD(const char *) ap_set_listener(cmd_parms *cmd, void *dummy, 
  105.                                                 int argc, char *const argv[]);
  106. AP_DECLARE_NONSTD(const char *) ap_set_send_buffer_size(cmd_parms *cmd, void *dummy,
  107.                     const char *arg);
  108. AP_DECLARE_NONSTD(const char *) ap_set_receive_buffer_size(cmd_parms *cmd,
  109.                                                            void *dummy,
  110.                                                            const char *arg);
  111.  
  112. #define LISTEN_COMMANDS    \
  113. AP_INIT_TAKE1("ListenBacklog", ap_set_listenbacklog, NULL, RSRC_CONF, \
  114.   "Maximum length of the queue of pending connections, as used by listen(2)"), \
  115. AP_INIT_TAKE_ARGV("Listen", ap_set_listener, NULL, RSRC_CONF, \
  116.   "A port number or a numeric IP address and a port number, and an optional protocol"), \
  117. AP_INIT_TAKE1("SendBufferSize", ap_set_send_buffer_size, NULL, RSRC_CONF, \
  118.   "Send buffer size in bytes"), \
  119. AP_INIT_TAKE1("ReceiveBufferSize", ap_set_receive_buffer_size, NULL, \
  120.               RSRC_CONF, "Receive buffer size in bytes")
  121.  
  122. #ifdef __cplusplus
  123. }
  124. #endif
  125.  
  126. #endif
  127. /** @} */
  128.