From c7ca7cc5ea14320d1b497e1459ac220d381b4fa0 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 16 Oct 2008 15:24:02 +0000 Subject: [PATCH] expose more of apr socket code git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10043 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_apr.h | 25 ++++++++++++++++++++++++- src/switch_apr.c | 4 ++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/include/switch_apr.h b/src/include/switch_apr.h index be15ba8d95..de598645ac 100644 --- a/src/include/switch_apr.h +++ b/src/include/switch_apr.h @@ -1171,13 +1171,36 @@ SWITCH_DECLARE(switch_status_t) switch_mcast_join(switch_socket_t *sock, switch_ /** @} */ +typedef enum { + SWITCH_NO_DESC, /**< nothing here */ + SWITCH_POLL_SOCKET, /**< descriptor refers to a socket */ + SWITCH_POLL_FILE, /**< descriptor refers to a file */ + SWITCH_POLL_LASTDESC /**< descriptor is the last one in the list */ +} switch_pollset_type_t; + +typedef union { + switch_file_t *f; /**< file */ + switch_socket_t *s; /**< socket */ +} switch_descriptor_t; + +struct switch_pollfd { + switch_memory_pool_t *p; /**< associated pool */ + switch_pollset_type_t desc_type; /**< descriptor type */ + int16_t reqevents; /**< requested events */ + int16_t rtnevents; /**< returned events */ + switch_descriptor_t desc; /**< @see apr_descriptor */ + void *client_data; /**< allows app to associate context */ +}; + + + /** * @defgroup apr_poll Poll Routines * @ingroup switch_apr * @{ */ /** Poll descriptor set. */ - typedef struct apr_pollfd_t switch_pollfd_t; + typedef struct switch_pollfd switch_pollfd_t; /** Opaque structure used for pollset API */ typedef struct apr_pollset_t switch_pollset_t; diff --git a/src/switch_apr.c b/src/switch_apr.c index 0fb9e89a97..aecc8a04c6 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -751,12 +751,12 @@ SWITCH_DECLARE(switch_status_t) switch_pollset_create(switch_pollset_t **pollset SWITCH_DECLARE(switch_status_t) switch_pollset_add(switch_pollset_t *pollset, const switch_pollfd_t *descriptor) { - return apr_pollset_add(pollset, descriptor); + return apr_pollset_add((apr_pollset_t *)pollset, (apr_pollfd_t *)descriptor); } SWITCH_DECLARE(switch_status_t) switch_poll(switch_pollfd_t *aprset, int32_t numsock, int32_t *nsds, switch_interval_time_t timeout) { - return apr_poll(aprset, numsock, nsds, timeout); + return apr_poll((apr_pollfd_t *)aprset, numsock, nsds, timeout); } SWITCH_DECLARE(switch_status_t) switch_socket_create_pollfd(switch_pollfd_t **poll, switch_socket_t *sock, int16_t flags, switch_memory_pool_t *pool)