Windows NT KAMIDAKI 10.0 build 19045 (Windows 10) AMD64
Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.3.9
Server IP : 192.168.3.16 & Your IP : 216.73.216.140
Domains :
Cant Read [ /etc/named.conf ]
User : SISTEMA
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
C: /
xampp /
apache /
include /
Delete
Unzip
Name
Size
Permission
Date
Action
ap_compat.h
1.08
KB
-rw-rw-rw-
2006-07-12 00:33
ap_config.h
6.65
KB
-rw-rw-rw-
2012-08-15 03:59
ap_config_layout.h
1.21
KB
-rw-rw-rw-
2022-01-02 15:34
ap_expr.h
14.09
KB
-rw-rw-rw-
2020-02-21 02:33
ap_hooks.h
6.01
KB
-rw-rw-rw-
2011-09-23 22:08
ap_listen.h
5.85
KB
-rw-rw-rw-
2016-05-30 23:26
ap_mmn.h
39.26
KB
-rw-rw-rw-
2023-08-29 11:23
ap_mpm.h
10.68
KB
-rw-rw-rw-
2020-04-23 16:32
ap_provider.h
3.55
KB
-rw-rw-rw-
2012-07-03 23:29
ap_regex.h
11.43
KB
-rw-rw-rw-
2022-02-28 13:56
ap_regkey.h
9.18
KB
-rw-rw-rw-
2011-09-23 17:38
ap_release.h
3.15
KB
-rw-rw-rw-
2023-10-16 17:28
ap_slotmem.h
7.26
KB
-rw-rw-rw-
2013-11-17 22:10
ap_socache.h
9.39
KB
-rw-rw-rw-
2012-02-11 00:47
apache_noprobes.h
15.93
KB
-rw-rw-rw-
2012-04-05 00:11
apr.h
18.28
KB
-rw-rw-rw-
2023-03-27 15:53
apr_allocator.h
6.25
KB
-rw-rw-rw-
2018-08-25 17:48
apr_anylock.h
5.06
KB
-rw-rw-rw-
2007-01-15 21:00
apr_atomic.h
6.25
KB
-rw-rw-rw-
2018-09-17 22:20
apr_base64.h
3.86
KB
-rw-rw-rw-
2012-12-23 00:24
apr_buckets.h
64.71
KB
-rw-rw-rw-
2021-09-18 17:25
apr_crypto.h
20.18
KB
-rw-rw-rw-
2017-06-14 00:28
apr_cstr.h
11.42
KB
-rw-rw-rw-
2016-12-03 22:49
apr_date.h
3.57
KB
-rw-rw-rw-
2007-01-15 21:00
apr_dbd.h
23.88
KB
-rw-rw-rw-
2017-04-02 21:57
apr_dbm.h
8.62
KB
-rw-rw-rw-
2008-11-21 08:20
apr_dso.h
2.73
KB
-rw-rw-rw-
2006-08-03 14:55
apr_encode.h
30.98
KB
-rw-rw-rw-
2022-10-18 11:38
apr_env.h
2.12
KB
-rw-rw-rw-
2009-09-26 00:07
apr_errno.h
55.08
KB
-rw-rw-rw-
2016-03-03 18:11
apr_escape.h
17.65
KB
-rw-rw-rw-
2018-08-26 14:24
apr_escape_test_char.h
1.4
KB
-rw-rw-rw-
2023-03-27 15:53
apr_file_info.h
17.59
KB
-rw-rw-rw-
2018-08-26 14:01
apr_file_io.h
43.11
KB
-rw-rw-rw-
2017-03-30 23:53
apr_fnmatch.h
6.23
KB
-rw-rw-rw-
2014-04-15 17:55
apr_general.h
7.36
KB
-rw-rw-rw-
2018-08-26 14:01
apr_getopt.h
6
KB
-rw-rw-rw-
2006-08-03 14:55
apr_global_mutex.h
7.38
KB
-rw-rw-rw-
2017-04-08 01:20
apr_hash.h
10.36
KB
-rw-rw-rw-
2020-11-08 10:13
apr_hooks.h
12.71
KB
-rw-rw-rw-
2013-10-03 17:32
apr_inherit.h
2.14
KB
-rw-rw-rw-
2013-10-03 17:29
apr_ldap.h
5.76
KB
-rw-rw-rw-
2023-01-24 11:36
apr_ldap_init.h
5.81
KB
-rw-rw-rw-
2009-02-19 10:04
apr_ldap_option.h
8.65
KB
-rw-rw-rw-
2009-02-19 10:04
apr_ldap_rebind.h
3.19
KB
-rw-rw-rw-
2009-02-19 10:04
apr_ldap_url.h
3.83
KB
-rw-rw-rw-
2009-02-19 10:04
apr_lib.h
8.47
KB
-rw-rw-rw-
2014-01-16 22:26
apr_md4.h
4.55
KB
-rw-rw-rw-
2007-01-15 21:00
apr_md5.h
6.37
KB
-rw-rw-rw-
2012-07-06 15:41
apr_memcache.h
17.25
KB
-rw-rw-rw-
2010-11-26 16:39
apr_mmap.h
5.18
KB
-rw-rw-rw-
2013-10-03 17:29
apr_network_io.h
36.95
KB
-rw-rw-rw-
2019-05-04 18:44
apr_optional.h
2.8
KB
-rw-rw-rw-
2007-01-15 21:00
apr_optional_hooks.h
3.9
KB
-rw-rw-rw-
2013-10-03 17:32
apr_perms_set.h
1.93
KB
-rw-rw-rw-
2014-04-28 16:08
apr_poll.h
21.04
KB
-rw-rw-rw-
2016-03-25 03:19
apr_pools.h
31.73
KB
-rw-rw-rw-
2022-06-18 00:09
apr_portable.h
20.56
KB
-rw-rw-rw-
2018-08-26 14:01
apr_proc_mutex.h
7.04
KB
-rw-rw-rw-
2017-04-08 01:20
apr_queue.h
4.12
KB
-rw-rw-rw-
2013-10-03 17:32
apr_random.h
5.07
KB
-rw-rw-rw-
2007-07-21 06:16
apr_redis.h
16.07
KB
-rw-rw-rw-
2017-09-27 20:02
apr_reslist.h
7.19
KB
-rw-rw-rw-
2013-10-03 17:32
apr_ring.h
19.28
KB
-rw-rw-rw-
2022-01-06 14:11
apr_rmm.h
4.8
KB
-rw-rw-rw-
2007-01-15 21:00
apr_sdbm.h
6.14
KB
-rw-rw-rw-
2007-10-23 13:59
apr_sha1.h
3.91
KB
-rw-rw-rw-
2007-01-15 21:00
apr_shm.h
9.48
KB
-rw-rw-rw-
2014-04-28 17:15
apr_signal.h
2.8
KB
-rw-rw-rw-
2007-08-05 19:48
apr_siphash.h
6.16
KB
-rw-rw-rw-
2017-06-15 00:00
apr_skiplist.h
14.56
KB
-rw-rw-rw-
2018-08-25 17:48
apr_strings.h
14.92
KB
-rw-rw-rw-
2018-08-26 14:01
apr_strmatch.h
2.69
KB
-rw-rw-rw-
2007-01-15 21:00
apr_support.h
1.65
KB
-rw-rw-rw-
2006-08-03 14:55
apr_tables.h
19.4
KB
-rw-rw-rw-
2020-11-08 09:24
apr_thread_cond.h
5.53
KB
-rw-rw-rw-
2007-06-29 21:20
apr_thread_mutex.h
4.51
KB
-rw-rw-rw-
2017-04-08 01:20
apr_thread_pool.h
11.14
KB
-rw-rw-rw-
2008-05-07 23:45
apr_thread_proc.h
36.11
KB
-rw-rw-rw-
2019-03-08 16:52
apr_thread_rwlock.h
4.78
KB
-rw-rw-rw-
2006-08-03 14:55
apr_time.h
7.62
KB
-rw-rw-rw-
2016-03-05 03:40
apr_uri.h
6.61
KB
-rw-rw-rw-
2009-01-07 22:39
apr_user.h
5.34
KB
-rw-rw-rw-
2013-10-03 17:29
apr_uuid.h
2.13
KB
-rw-rw-rw-
2007-01-15 21:00
apr_version.h
5.44
KB
-rw-rw-rw-
2023-04-13 11:38
apr_want.h
3.01
KB
-rw-rw-rw-
2012-08-15 00:48
apr_xlate.h
6.42
KB
-rw-rw-rw-
2007-01-15 21:00
apr_xml.h
12.54
KB
-rw-rw-rw-
2016-06-14 01:57
apu.h
4.76
KB
-rw-rw-rw-
2023-01-24 11:36
apu_errno.h
5.49
KB
-rw-rw-rw-
2009-01-07 22:35
apu_version.h
4.33
KB
-rw-rw-rw-
2023-02-01 09:56
apu_want.h
1.55
KB
-rw-rw-rw-
2023-01-24 11:36
cache_common.h
2.02
KB
-rw-rw-rw-
2013-05-29 00:30
expat.h
43.55
KB
-rw-rw-rw-
2022-10-25 19:09
heartbeat.h
1.62
KB
-rw-rw-rw-
2014-06-17 16:06
http_config.h
57.78
KB
-rw-rw-rw-
2022-02-23 16:39
http_connection.h
7.15
KB
-rw-rw-rw-
2021-09-26 18:11
http_core.h
37.25
KB
-rw-rw-rw-
2023-08-29 11:23
http_log.h
36.82
KB
-rw-rw-rw-
2016-08-25 16:48
http_main.h
3.25
KB
-rw-rw-rw-
2012-03-26 02:24
http_protocol.h
42.06
KB
-rw-rw-rw-
2022-06-01 16:34
http_request.h
26.34
KB
-rw-rw-rw-
2021-08-10 12:27
http_ssl.h
14.93
KB
-rw-rw-rw-
2022-08-22 00:26
http_vhost.h
4.61
KB
-rw-rw-rw-
2021-05-27 17:08
httpd.h
94.69
KB
-rw-rw-rw-
2022-03-09 16:04
mod_auth.h
4.55
KB
-rw-rw-rw-
2020-02-21 02:33
mod_cache.h
7.27
KB
-rw-rw-rw-
2011-12-03 20:02
mod_cgi.h
2.5
KB
-rw-rw-rw-
2011-09-23 17:38
mod_core.h
3.43
KB
-rw-rw-rw-
2012-09-24 13:49
mod_dav.h
100.22
KB
-rw-rw-rw-
2023-01-09 16:52
mod_dbd.h
4.18
KB
-rw-rw-rw-
2011-09-23 17:38
mod_http2.h
4.69
KB
-rw-rw-rw-
2023-08-29 11:23
mod_include.h
4.01
KB
-rw-rw-rw-
2011-09-23 17:38
mod_log_config.h
2.5
KB
-rw-rw-rw-
2011-09-23 17:38
mod_proxy.h
64.99
KB
-rw-rw-rw-
2023-03-31 18:33
mod_request.h
1.65
KB
-rw-rw-rw-
2011-02-18 20:40
mod_rewrite.h
1.41
KB
-rw-rw-rw-
2014-01-23 16:33
mod_so.h
1.23
KB
-rw-rw-rw-
2011-11-30 12:21
mod_ssl.h
4.99
KB
-rw-rw-rw-
2019-07-30 15:23
mod_ssl_openssl.h
4.79
KB
-rw-rw-rw-
2019-07-30 15:23
mod_status.h
2.45
KB
-rw-rw-rw-
2006-07-12 00:33
mod_watchdog.h
7.55
KB
-rw-rw-rw-
2014-09-05 18:19
mpm_common.h
17.39
KB
-rw-rw-rw-
2021-08-10 12:43
os.h
4.5
KB
-rw-rw-rw-
2021-04-21 05:10
scoreboard.h
9.98
KB
-rw-rw-rw-
2020-02-21 02:33
util_cfgtree.h
3.17
KB
-rw-rw-rw-
2011-09-23 17:38
util_charset.h
2.28
KB
-rw-rw-rw-
2014-11-01 11:19
util_cookies.h
4.99
KB
-rw-rw-rw-
2012-01-09 15:18
util_ebcdic.h
2.78
KB
-rw-rw-rw-
2014-11-01 11:19
util_fcgi.h
10.02
KB
-rw-rw-rw-
2020-02-21 02:33
util_filter.h
26.46
KB
-rw-rw-rw-
2013-04-15 16:37
util_ldap.h
18.33
KB
-rw-rw-rw-
2023-07-07 16:03
util_md5.h
2.19
KB
-rw-rw-rw-
2014-07-17 02:11
util_mutex.h
9.29
KB
-rw-rw-rw-
2011-10-09 22:35
util_script.h
9.8
KB
-rw-rw-rw-
2012-01-09 15:18
util_time.h
4.22
KB
-rw-rw-rw-
2023-07-18 01:16
util_varbuf.h
8.28
KB
-rw-rw-rw-
2014-07-19 21:22
util_xml.h
1.36
KB
-rw-rw-rw-
2014-07-19 21:22
zconf.h
16.83
KB
-rw-rw-rw-
2023-04-18 01:35
zlib.h
96.4
KB
-rw-rw-rw-
2023-08-18 12:45
Save
Rename
/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef APR_POLL_H #define APR_POLL_H /** * @file apr_poll.h * @brief APR Poll interface */ #include "apr.h" #include "apr_pools.h" #include "apr_errno.h" #include "apr_inherit.h" #include "apr_file_io.h" #include "apr_network_io.h" #if APR_HAVE_NETINET_IN_H #include <netinet/in.h> #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * @defgroup apr_poll Poll Routines * @ingroup APR * @{ */ /** * @defgroup pollopts Poll options * @ingroup apr_poll * @{ */ #define APR_POLLIN 0x001 /**< Can read without blocking */ #define APR_POLLPRI 0x002 /**< Priority data available */ #define APR_POLLOUT 0x004 /**< Can write without blocking */ #define APR_POLLERR 0x010 /**< Pending error */ #define APR_POLLHUP 0x020 /**< Hangup occurred */ #define APR_POLLNVAL 0x040 /**< Descriptor invalid */ /** @} */ /** * @defgroup pollflags Pollset Flags * @ingroup apr_poll * @{ */ #define APR_POLLSET_THREADSAFE 0x001 /**< Adding or removing a descriptor is * thread-safe */ #define APR_POLLSET_NOCOPY 0x002 /**< Descriptors passed to apr_pollset_add() * are not copied */ #define APR_POLLSET_WAKEABLE 0x004 /**< Poll operations are interruptable by * apr_pollset_wakeup() or apr_pollcb_wakeup() */ #define APR_POLLSET_NODEFAULT 0x010 /**< Do not try to use the default method if * the specified non-default method cannot be * used */ /** @} */ /** * Pollset Methods */ typedef enum { APR_POLLSET_DEFAULT, /**< Platform default poll method */ APR_POLLSET_SELECT, /**< Poll uses select method */ APR_POLLSET_KQUEUE, /**< Poll uses kqueue method */ APR_POLLSET_PORT, /**< Poll uses Solaris event port method */ APR_POLLSET_EPOLL, /**< Poll uses epoll method */ APR_POLLSET_POLL, /**< Poll uses poll method */ APR_POLLSET_AIO_MSGQ /**< Poll uses z/OS asio method */ } apr_pollset_method_e; /** Used in apr_pollfd_t to determine what the apr_descriptor is */ typedef enum { APR_NO_DESC, /**< nothing here */ APR_POLL_SOCKET, /**< descriptor refers to a socket */ APR_POLL_FILE, /**< descriptor refers to a file */ APR_POLL_LASTDESC /**< @deprecated descriptor is the last one in the list */ } apr_datatype_e ; /** Union of either an APR file or socket. */ typedef union { apr_file_t *f; /**< file */ apr_socket_t *s; /**< socket */ } apr_descriptor; /** @see apr_pollfd_t */ typedef struct apr_pollfd_t apr_pollfd_t; /** Poll descriptor set. */ struct apr_pollfd_t { apr_pool_t *p; /**< associated pool */ apr_datatype_e desc_type; /**< descriptor type */ apr_int16_t reqevents; /**< requested events */ apr_int16_t rtnevents; /**< returned events */ apr_descriptor desc; /**< @see apr_descriptor */ void *client_data; /**< allows app to associate context */ }; /* General-purpose poll API for arbitrarily large numbers of * file descriptors */ /** Opaque structure used for pollset API */ typedef struct apr_pollset_t apr_pollset_t; /** * Set up a pollset object * @param pollset The pointer in which to return the newly created object * @param size The maximum number of descriptors that this pollset can hold * @param p The pool from which to allocate the pollset * @param flags Optional flags to modify the operation of the pollset. * * @remark If flags contains APR_POLLSET_THREADSAFE, then a pollset is * created on which it is safe to make concurrent calls to * apr_pollset_add(), apr_pollset_remove() and apr_pollset_poll() * from separate threads. This feature is only supported on some * platforms; the apr_pollset_create() call will fail with * APR_ENOTIMPL on platforms where it is not supported. * @remark If flags contains APR_POLLSET_WAKEABLE, then a pollset is * created with an additional internal pipe object used for the * apr_pollset_wakeup() call. The actual size of pollset is * in that case @a size + 1. This feature is only supported on some * platforms; the apr_pollset_create() call will fail with * APR_ENOTIMPL on platforms where it is not supported. * @remark If flags contains APR_POLLSET_NOCOPY, then the apr_pollfd_t * structures passed to apr_pollset_add() are not copied and * must have a lifetime at least as long as the pollset. * @remark Some poll methods (including APR_POLLSET_KQUEUE, * APR_POLLSET_PORT, and APR_POLLSET_EPOLL) do not have a * fixed limit on the size of the pollset. For these methods, * the size parameter controls the maximum number of * descriptors that will be returned by a single call to * apr_pollset_poll(). */ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, apr_uint32_t size, apr_pool_t *p, apr_uint32_t flags); /** * Set up a pollset object * @param pollset The pointer in which to return the newly created object * @param size The maximum number of descriptors that this pollset can hold * @param p The pool from which to allocate the pollset * @param flags Optional flags to modify the operation of the pollset. * @param method Poll method to use. See #apr_pollset_method_e. If this * method cannot be used, the default method will be used unless the * APR_POLLSET_NODEFAULT flag has been specified. * * @remark If flags contains APR_POLLSET_THREADSAFE, then a pollset is * created on which it is safe to make concurrent calls to * apr_pollset_add(), apr_pollset_remove() and apr_pollset_poll() * from separate threads. This feature is only supported on some * platforms; the apr_pollset_create_ex() call will fail with * APR_ENOTIMPL on platforms where it is not supported. * @remark If flags contains APR_POLLSET_WAKEABLE, then a pollset is * created with additional internal pipe object used for the * apr_pollset_wakeup() call. The actual size of pollset is * in that case size + 1. This feature is only supported on some * platforms; the apr_pollset_create_ex() call will fail with * APR_ENOTIMPL on platforms where it is not supported. * @remark If flags contains APR_POLLSET_NOCOPY, then the apr_pollfd_t * structures passed to apr_pollset_add() are not copied and * must have a lifetime at least as long as the pollset. * @remark Some poll methods (including APR_POLLSET_KQUEUE, * APR_POLLSET_PORT, and APR_POLLSET_EPOLL) do not have a * fixed limit on the size of the pollset. For these methods, * the size parameter controls the maximum number of * descriptors that will be returned by a single call to * apr_pollset_poll(). */ APR_DECLARE(apr_status_t) apr_pollset_create_ex(apr_pollset_t **pollset, apr_uint32_t size, apr_pool_t *p, apr_uint32_t flags, apr_pollset_method_e method); /** * Destroy a pollset object * @param pollset The pollset to destroy */ APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset); /** * Add a socket or file descriptor to a pollset * @param pollset The pollset to which to add the descriptor * @param descriptor The descriptor to add * @remark If you set client_data in the descriptor, that value * will be returned in the client_data field whenever this * descriptor is signalled in apr_pollset_poll(). * @remark If the pollset has been created with APR_POLLSET_THREADSAFE * and thread T1 is blocked in a call to apr_pollset_poll() for * this same pollset that is being modified via apr_pollset_add() * in thread T2, the currently executing apr_pollset_poll() call in * T1 will either: (1) automatically include the newly added descriptor * in the set of descriptors it is watching or (2) return immediately * with APR_EINTR. Option (1) is recommended, but option (2) is * allowed for implementations where option (1) is impossible * or impractical. * @remark If the pollset has been created with APR_POLLSET_NOCOPY, the * apr_pollfd_t structure referenced by descriptor will not be copied * and must have a lifetime at least as long as the pollset. * @remark Do not add the same socket or file descriptor to the same pollset * multiple times, even if the requested events differ for the * different calls to apr_pollset_add(). If the events of interest * for a descriptor change, you must first remove the descriptor * from the pollset with apr_pollset_remove(), then add it again * specifying all requested events. */ APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, const apr_pollfd_t *descriptor); /** * Remove a descriptor from a pollset * @param pollset The pollset from which to remove the descriptor * @param descriptor The descriptor to remove * @remark If the descriptor is not found, APR_NOTFOUND is returned. * @remark If the pollset has been created with APR_POLLSET_THREADSAFE * and thread T1 is blocked in a call to apr_pollset_poll() for * this same pollset that is being modified via apr_pollset_remove() * in thread T2, the currently executing apr_pollset_poll() call in * T1 will either: (1) automatically exclude the newly added descriptor * in the set of descriptors it is watching or (2) return immediately * with APR_EINTR. Option (1) is recommended, but option (2) is * allowed for implementations where option (1) is impossible * or impractical. * @remark apr_pollset_remove() cannot be used to remove a subset of requested * events for a descriptor. The reqevents field in the apr_pollfd_t * parameter must contain the same value when removing as when adding. */ APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, const apr_pollfd_t *descriptor); /** * Block for activity on the descriptor(s) in a pollset * @param pollset The pollset to use * @param timeout The amount of time in microseconds to wait. This is a * maximum, not a minimum. If a descriptor is signalled, the * function will return before this time. If timeout is * negative, the function will block until a descriptor is * signalled or until apr_pollset_wakeup() has been called. * @param num Number of signalled descriptors (output parameter) * @param descriptors Array of signalled descriptors (output parameter) * @remark APR_EINTR will be returned if the pollset has been created with * APR_POLLSET_WAKEABLE, apr_pollset_wakeup() has been called while * waiting for activity, and there were no signalled descriptors at the * time of the wakeup call. * @remark Multiple signalled conditions for the same descriptor may be reported * in one or more returned apr_pollfd_t structures, depending on the * implementation. */ APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, apr_interval_time_t timeout, apr_int32_t *num, const apr_pollfd_t **descriptors); /** * Interrupt the blocked apr_pollset_poll() call. * @param pollset The pollset to use * @remark If the pollset was not created with APR_POLLSET_WAKEABLE the * return value is APR_EINIT. */ APR_DECLARE(apr_status_t) apr_pollset_wakeup(apr_pollset_t *pollset); /** * Poll the descriptors in the poll structure * @param aprset The poll structure we will be using. * @param numsock The number of descriptors we are polling * @param nsds The number of descriptors signalled (output parameter) * @param timeout The amount of time in microseconds to wait. This is a * maximum, not a minimum. If a descriptor is signalled, the * function will return before this time. If timeout is * negative, the function will block until a descriptor is * signalled or until apr_pollset_wakeup() has been called. * @remark The number of descriptors signalled is returned in the third argument. * This is a blocking call, and it will not return until either a * descriptor has been signalled or the timeout has expired. * @remark The rtnevents field in the apr_pollfd_t array will only be filled- * in if the return value is APR_SUCCESS. */ APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t numsock, apr_int32_t *nsds, apr_interval_time_t timeout); /** * Return a printable representation of the pollset method. * @param pollset The pollset to use */ APR_DECLARE(const char *) apr_pollset_method_name(apr_pollset_t *pollset); /** * Return a printable representation of the default pollset method * (APR_POLLSET_DEFAULT). */ APR_DECLARE(const char *) apr_poll_method_defname(void); /** Opaque structure used for pollcb API */ typedef struct apr_pollcb_t apr_pollcb_t; /** * Set up a pollcb object * @param pollcb The pointer in which to return the newly created object * @param size The maximum number of descriptors that a single _poll can return. * @param p The pool from which to allocate the pollcb * @param flags Optional flags to modify the operation of the pollcb. * * @remark If flags contains APR_POLLSET_WAKEABLE, then a pollcb is * created with an additional internal pipe object used for the * apr_pollcb_wakeup() call. The actual size of pollcb is * in that case @a size + 1. * @remark Pollcb is only supported on some platforms; the apr_pollcb_create() * call will fail with APR_ENOTIMPL on platforms where it is not supported. */ APR_DECLARE(apr_status_t) apr_pollcb_create(apr_pollcb_t **pollcb, apr_uint32_t size, apr_pool_t *p, apr_uint32_t flags); /** * Set up a pollcb object * @param pollcb The pointer in which to return the newly created object * @param size The maximum number of descriptors that a single _poll can return. * @param p The pool from which to allocate the pollcb * @param flags Optional flags to modify the operation of the pollcb. * @param method Poll method to use. See #apr_pollset_method_e. If this * method cannot be used, the default method will be used unless the * APR_POLLSET_NODEFAULT flag has been specified. * * @remark If flags contains APR_POLLSET_WAKEABLE, then a pollcb is * created with an additional internal pipe object used for the * apr_pollcb_wakeup() call. The actual size of pollcb is * in that case @a size + 1. * @remark Pollcb is only supported on some platforms; the apr_pollcb_create_ex() * call will fail with APR_ENOTIMPL on platforms where it is not supported. */ APR_DECLARE(apr_status_t) apr_pollcb_create_ex(apr_pollcb_t **pollcb, apr_uint32_t size, apr_pool_t *p, apr_uint32_t flags, apr_pollset_method_e method); /** * Add a socket or file descriptor to a pollcb * @param pollcb The pollcb to which to add the descriptor * @param descriptor The descriptor to add * @remark If you set client_data in the descriptor, that value will be * returned in the client_data field whenever this descriptor is * signalled in apr_pollcb_poll(). * @remark Unlike the apr_pollset API, the descriptor is not copied, and users * must retain the memory used by descriptor, as the same pointer will * be returned to them from apr_pollcb_poll. * @remark Do not add the same socket or file descriptor to the same pollcb * multiple times, even if the requested events differ for the * different calls to apr_pollcb_add(). If the events of interest * for a descriptor change, you must first remove the descriptor * from the pollcb with apr_pollcb_remove(), then add it again * specifying all requested events. */ APR_DECLARE(apr_status_t) apr_pollcb_add(apr_pollcb_t *pollcb, apr_pollfd_t *descriptor); /** * Remove a descriptor from a pollcb * @param pollcb The pollcb from which to remove the descriptor * @param descriptor The descriptor to remove * @remark If the descriptor is not found, APR_NOTFOUND is returned. * @remark apr_pollcb_remove() cannot be used to remove a subset of requested * events for a descriptor. The reqevents field in the apr_pollfd_t * parameter must contain the same value when removing as when adding. */ APR_DECLARE(apr_status_t) apr_pollcb_remove(apr_pollcb_t *pollcb, apr_pollfd_t *descriptor); /** * Function prototype for pollcb handlers * @param baton Opaque baton passed into apr_pollcb_poll() * @param descriptor Contains the notification for an active descriptor. * The @a rtnevents member describes which events were triggered * for this descriptor. * @remark If the pollcb handler does not return APR_SUCCESS, the apr_pollcb_poll() * call returns with the handler's return value. */ typedef apr_status_t (*apr_pollcb_cb_t)(void *baton, apr_pollfd_t *descriptor); /** * Block for activity on the descriptor(s) in a pollcb * @param pollcb The pollcb to use * @param timeout The amount of time in microseconds to wait. This is a * maximum, not a minimum. If a descriptor is signalled, the * function will return before this time. If timeout is * negative, the function will block until a descriptor is * signalled or until apr_pollcb_wakeup() has been called. * @param func Callback function to call for each active descriptor. * @param baton Opaque baton passed to the callback function. * @remark Multiple signalled conditions for the same descriptor may be reported * in one or more calls to the callback function, depending on the * implementation. * @remark APR_EINTR will be returned if the pollset has been created with * APR_POLLSET_WAKEABLE and apr_pollcb_wakeup() has been called while * waiting for activity. */ APR_DECLARE(apr_status_t) apr_pollcb_poll(apr_pollcb_t *pollcb, apr_interval_time_t timeout, apr_pollcb_cb_t func, void *baton); /** * Interrupt the blocked apr_pollcb_poll() call. * @param pollcb The pollcb to use * @remark If the pollcb was not created with APR_POLLSET_WAKEABLE the * return value is APR_EINIT. */ APR_DECLARE(apr_status_t) apr_pollcb_wakeup(apr_pollcb_t *pollcb); /** * Return a printable representation of the pollcb method. * @param pollcb The pollcb to use */ APR_DECLARE(const char *) apr_pollcb_method_name(apr_pollcb_t *pollcb); /** @} */ #ifdef __cplusplus } #endif #endif /* ! APR_POLL_H */