From c7ca7cc5ea14320d1b497e1459ac220d381b4fa0 Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthony.minessale@gmail.com>
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)