From 50097dd078e4843f9e95a6612427fe4523c8d639 Mon Sep 17 00:00:00 2001 From: Andy Green <andy.green@linaro.org> Date: Fri, 15 Feb 2013 22:36:30 +0800 Subject: [PATCH] api change deliver socket fd to in param of extpoll callbacks Signed-off-by: Andy Green <andy.green@linaro.org> --- changelog | 8 ++++++++ lib/libwebsockets.c | 13 +++++++------ lib/libwebsockets.h | 8 ++++---- libwebsockets-api-doc.html | 8 ++++---- test-server/test-server.c | 2 +- 5 files changed, 24 insertions(+), 15 deletions(-) diff --git a/changelog b/changelog index ea3cdf0d..a2c46fd7 100644 --- a/changelog +++ b/changelog @@ -10,6 +10,14 @@ User api additions and get a LWS_CALLBACK_HTTP_WRITEABLE callback, the same way you can regulate writes with a websocket protocol connection. +User api changes +---------------- + + - the external poll callbacks now get the socket descriptor coming from the + "in" parameter. The user parameter provides the user_space for the + wsi as it normally does on the other callbacks. + + v1.21-chrome26-firefox18 ======================== diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index 3dfe3a91..74359a2b 100644 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -127,7 +127,7 @@ insert_wsi_socket_into_fds(struct libwebsocket_context *context, /* external POLL support via protocol 0 */ context->protocols[0].callback(context, wsi, LWS_CALLBACK_ADD_POLL_FD, - (void *)(long)wsi->sock, NULL, POLLIN); + wsi->user_space, (void *)(long)wsi->sock, POLLIN); return 0; } @@ -170,7 +170,8 @@ do_ext: /* remove also from external POLL support via protocol 0 */ if (wsi->sock) context->protocols[0].callback(context, wsi, - LWS_CALLBACK_DEL_POLL_FD, (void *)(long)wsi->sock, NULL, 0); + LWS_CALLBACK_DEL_POLL_FD, wsi->user_space, + (void *)(long)wsi->sock, 0); return 0; } @@ -739,7 +740,7 @@ user_service: /* external POLL support via protocol 0 */ context->protocols[0].callback(context, wsi, LWS_CALLBACK_CLEAR_MODE_POLL_FD, - (void *)(long)wsi->sock, NULL, POLLOUT); + wsi->user_space, (void *)(long)wsi->sock, POLLOUT); } #ifndef LWS_NO_EXTENSIONS notify_action: @@ -1312,7 +1313,7 @@ libwebsocket_callback_on_writable(struct libwebsocket_context *context, /* external POLL support via protocol 0 */ context->protocols[0].callback(context, wsi, LWS_CALLBACK_SET_MODE_POLL_FD, - (void *)(long)wsi->sock, NULL, POLLOUT); + wsi->user_space, (void *)(long)wsi->sock, POLLOUT); return 1; } @@ -1468,12 +1469,12 @@ _libwebsocket_rx_flow_control(struct libwebsocket *wsi) /* external POLL support via protocol 0 */ context->protocols[0].callback(context, wsi, LWS_CALLBACK_SET_MODE_POLL_FD, - (void *)(long)wsi->sock, NULL, POLLIN); + wsi->user_space, (void *)(long)wsi->sock, POLLIN); else /* external POLL support via protocol 0 */ context->protocols[0].callback(context, wsi, LWS_CALLBACK_CLEAR_MODE_POLL_FD, - (void *)(long)wsi->sock, NULL, POLLIN); + wsi->user_space, (void *)(long)wsi->sock, POLLIN); return 1; } diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 3b1e8373..e1c04cc4 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -568,24 +568,24 @@ struct libwebsocket_extension; * poll array interface code in the callback for protocol 0, the * first protocol you support, usually the HTTP protocol in the * serving case. This callback happens when a socket needs to be - * added to the polling loop: @user contains the fd, and + * added to the polling loop: @in contains the fd, and * @len is the events bitmap (like, POLLIN). If you are using the * internal polling loop (the "service" callback), you can just * ignore these callbacks. * * LWS_CALLBACK_DEL_POLL_FD: This callback happens when a socket descriptor - * needs to be removed from an external polling array. @user is + * needs to be removed from an external polling array. @in is * the socket desricptor. If you are using the internal polling * loop, you can just ignore it. * * LWS_CALLBACK_SET_MODE_POLL_FD: This callback happens when libwebsockets - * wants to modify the events for the socket descriptor in @user. + * wants to modify the events for the socket descriptor in @in. * The handler should OR @len on to the events member of the pollfd * struct for this socket descriptor. If you are using the * internal polling loop, you can just ignore it. * * LWS_CALLBACK_CLEAR_MODE_POLL_FD: This callback occurs when libwebsockets - * wants to modify the events for the socket descriptor in @user. + * wants to modify the events for the socket descriptor in @in. * The handler should AND ~@len on to the events member of the * pollfd struct for this socket descriptor. If you are using the * internal polling loop, you can just ignore it. diff --git a/libwebsockets-api-doc.html b/libwebsockets-api-doc.html index 7fd87027..306f18e6 100644 --- a/libwebsockets-api-doc.html +++ b/libwebsockets-api-doc.html @@ -785,7 +785,7 @@ serving case. This callback happens when a socket needs to be </blockquote> <h3>added to the polling loop</h3> <blockquote> -<tt><b>user</b></tt> contains the fd, and +<tt><b>in</b></tt> contains the fd, and <tt><b>len</b></tt> is the events bitmap (like, POLLIN). If you are using the internal polling loop (the "service" callback), you can just ignore these callbacks. @@ -793,14 +793,14 @@ ignore these callbacks. <h3>LWS_CALLBACK_DEL_POLL_FD</h3> <blockquote> This callback happens when a socket descriptor -needs to be removed from an external polling array. <tt><b>user</b></tt> is +needs to be removed from an external polling array. <tt><b>in</b></tt> is the socket desricptor. If you are using the internal polling loop, you can just ignore it. </blockquote> <h3>LWS_CALLBACK_SET_MODE_POLL_FD</h3> <blockquote> This callback happens when libwebsockets -wants to modify the events for the socket descriptor in <tt><b>user</b></tt>. +wants to modify the events for the socket descriptor in <tt><b>in</b></tt>. The handler should OR <tt><b>len</b></tt> on to the events member of the pollfd struct for this socket descriptor. If you are using the internal polling loop, you can just ignore it. @@ -808,7 +808,7 @@ internal polling loop, you can just ignore it. <h3>LWS_CALLBACK_CLEAR_MODE_POLL_FD</h3> <blockquote> This callback occurs when libwebsockets -wants to modify the events for the socket descriptor in <tt><b>user</b></tt>. +wants to modify the events for the socket descriptor in <tt><b>in</b></tt>. The handler should AND ~<tt><b>len</b></tt> on to the events member of the pollfd struct for this socket descriptor. If you are using the internal polling loop, you can just ignore it. diff --git a/test-server/test-server.c b/test-server/test-server.c index 246c1b8d..27208e03 100644 --- a/test-server/test-server.c +++ b/test-server/test-server.c @@ -129,7 +129,7 @@ static int callback_http(struct libwebsocket_context *context, struct per_session_data__http *pss = (struct per_session_data__http *)user; #ifdef EXTERNAL_POLL int m; - int fd = (int)(long)user; + int fd = (int)(long)in; #endif switch (reason) { -- GitLab