introduce lws_sockfd_type
authorAndy Green <andy.green@linaro.org>
Mon, 2 Nov 2015 05:13:44 +0000 (13:13 +0800)
committerAndy Green <andy.green@linaro.org>
Sat, 14 Nov 2015 08:30:37 +0000 (16:30 +0800)
Signed-off-by: Andy Green <andy.green@linaro.org>
lib/libwebsockets.h
lib/private-libwebsockets.h
lib/server.c

index 3c0f185..3e1db93 100644 (file)
@@ -237,26 +237,45 @@ enum libwebsocket_callback_reasons {
        LWS_CALLBACK_USER = 1000, /* user code can use any including / above */
 };
 
-// argument structure for all external poll related calls
-// passed in via 'in'
-struct libwebsocket_pollargs {
-    int fd;            // applicable file descriptor
-    int events;        // the new event mask
-    int prev_events;   // the previous event mask
-};
-
 
-#if defined(_WIN32) && (_WIN32_WINNT < 0x0600) 
+#if defined(_WIN32) && (_WIN32_WINNT < 0x0600)
+typedef SOCKET lws_sockfd_type;
 struct libwebsocket_pollfd {
-       SOCKET fd;
+       lws_sockfd_type fd;
        SHORT events;
        SHORT revents;
 };
 WINSOCK_API_LINKAGE int WSAAPI WSAPoll(struct libwebsocket_pollfd fdArray[], ULONG fds, INT timeout);
 #else
+
+#if defined(MBED_OPERATORS)
+typedef int lws_sockfd_type;
+struct pollfd {
+       lws_sockfd_type *fd;
+       short events;
+       short revents;
+};
+#define POLLIN          0x0001
+#define POLLPRI         0x0002
+#define POLLOUT         0x0004
+#define POLLERR         0x0008
+#define POLLHUP         0x0010
+#define POLLNVAL        0x0020
+#else
+typedef int lws_fd_type;
+#endif
+
 #define libwebsocket_pollfd pollfd
 #endif
 
+// argument structure for all external poll related calls
+// passed in via 'in'
+struct libwebsocket_pollargs {
+    lws_sockfd_type fd;            // applicable file descriptor
+    int events;        // the new event mask
+    int prev_events;   // the previous event mask
+};
+
 enum libwebsocket_extension_callback_reasons {
        LWS_EXT_CALLBACK_SERVER_CONTEXT_CONSTRUCT,
        LWS_EXT_CALLBACK_CLIENT_CONTEXT_CONSTRUCT,
@@ -1356,7 +1375,7 @@ libwebsocket_canonical_hostname(struct libwebsocket_context *context);
 
 LWS_VISIBLE LWS_EXTERN void
 libwebsockets_get_peer_addresses(struct libwebsocket_context *context,
-               struct libwebsocket *wsi, int fd, char *name, int name_len,
+               struct libwebsocket *wsi, lws_sockfd_type fd, char *name, int name_len,
                                        char *rip, int rip_len);
 
 LWS_VISIBLE LWS_EXTERN int
index 5b1238e..ece8380 100644 (file)
@@ -477,7 +477,7 @@ struct libwebsocket_context {
        int fd_random;
        int listen_service_modulo;
        int listen_service_count;
-       int listen_service_fd;
+       lws_sockfd_type listen_service_fd;
        int listen_service_extraseen;
 
        /*
@@ -532,7 +532,7 @@ enum {
 LWS_EXTERN void lws_feature_status_libev(struct lws_context_creation_info *info);
 LWS_EXTERN void
 lws_libev_accept(struct libwebsocket_context *context,
-                struct libwebsocket *new_wsi, int accept_fd);
+                struct libwebsocket *new_wsi, lws_sockfd_type accept_fd);
 LWS_EXTERN void
 lws_libev_io(struct libwebsocket_context *context,
                                struct libwebsocket *wsi, int flags);
@@ -612,7 +612,7 @@ struct _lws_http_mode_related {
 #if defined(WIN32) || defined(_WIN32)
        HANDLE fd;
 #else
-       int fd;
+       lws_sockfd_type fd;
 #endif
        unsigned long filepos;
        unsigned long filelen;
@@ -842,7 +842,7 @@ struct libwebsocket {
 
        char pending_timeout; /* enum pending_timeout */
        time_t pending_timeout_limit;
-       int sock;
+       lws_sockfd_type sock;
        int position_in_fds_table;
 #ifdef LWS_LATENCY
        unsigned long action_start;
@@ -930,13 +930,13 @@ lws_b64_selftest(void);
 
 #ifdef _WIN32
 LWS_EXTERN struct libwebsocket *
-wsi_from_fd(struct libwebsocket_context *context, int fd);
+wsi_from_fd(struct libwebsocket_context *context, lws_sockfd_type fd);
 
 LWS_EXTERN int 
 insert_wsi(struct libwebsocket_context *context, struct libwebsocket *wsi);
 
 LWS_EXTERN int
-delete_from_fd(struct libwebsocket_context *context, int fd);
+delete_from_fd(struct libwebsocket_context *context, lws_sockfd_type fd);
 #else
 #define wsi_from_fd(A,B)  A->lws_lookup[B] 
 #define insert_wsi(A,B)   A->lws_lookup[B->sock]=B
@@ -1067,7 +1067,7 @@ void lws_http2_configure_if_upgraded(struct libwebsocket *wsi);
 #endif
 
 LWS_EXTERN int
-lws_plat_set_socket_options(struct libwebsocket_context *context, int fd);
+lws_plat_set_socket_options(struct libwebsocket_context *context, lws_sockfd_type fd);
 
 LWS_EXTERN int
 lws_allocate_header_table(struct libwebsocket *wsi);
@@ -1152,7 +1152,7 @@ lws_ssl_pending(struct libwebsocket *wsi);
 LWS_EXTERN int
 lws_server_socket_service_ssl(struct libwebsocket_context *context,
                struct libwebsocket **wsi, struct libwebsocket *new_wsi,
-               int accept_fd, struct libwebsocket_pollfd *pollfd);
+               lws_sockfd_type accept_fd, struct libwebsocket_pollfd *pollfd);
 LWS_EXTERN int
 lws_ssl_close(struct libwebsocket *wsi);
 LWS_EXTERN void
index 632a529..14acf2e 100644 (file)
@@ -26,7 +26,7 @@ int lws_context_init_server(struct lws_context_creation_info *info,
                            struct libwebsocket_context *context)
 {
        int n;
-       int sockfd;
+       lws_sockfd_type sockfd;
        struct sockaddr_in sin;
        socklen_t len = sizeof(sin);
        int opt = 1;