{"schema":"libjg2-1",
"vpath":"/git/",
"avatar":"/git/avatar/",
"alang":"",
"gen_ut":1745908751,
"reponame":"libwebsockets",
"desc":"libwebsockets lightweight C networking library",
"owner": { "name": "Andy Green", "email": "andy@warmcat.com", "md5": "c50933ca2aa61e0fe2c43d46bb6b59cb" },"url":"https://libwebsockets.org/repo/libwebsockets",
"f":3,
"items": [
{"schema":"libjg2-1",
"cid":"802e6ebd30503f0e0e5fcc927c8fb466",
"commit": {"type":"commit",
"time": 1297545843,
"time_ofs": 0,
"oid_tree": { "oid": "b0207aa537546ffc917e527b6a5eb38e1701be89", "alias": []},
"oid":{ "oid": "e7981dc65a5b1c1831296deed6df846cea696e70", "alias": []},
"msg": "document-external-poll-support.patch",
"sig_commit": { "git_time": { "time": 1297545843, "offset": 0 }, "name": "Andy Green", "email": "andy.green@linaro.org", "md5": "4863edaebb4491aa6049a4d2d9c98c2c" },
"sig_author": { "git_time": { "time": 1297545843, "offset": 0 }, "name": "Andy Green", "email": "andy.green@linaro.org", "md5": "4863edaebb4491aa6049a4d2d9c98c2c" }},
"body": "document-external-poll-support.patch\n\nSigned-off-by: Andy Green \u003candy.green@linaro.org\u003e\n"
,
"diff": "diff --git a/README-test-server b/README-test-server\nindex 1cb8e84..2507a67 100644\n--- a/README-test-server\n+++ b/README-test-server\n@@ -175,9 +175,25 @@ libwebsockets-test-client someserver.com\n Websocket version supported\n ---------------------------\n \n-The websocket client code is 04 version, the server supports\n-both 00/76 in text mode and 04 dynamically per-connection\n-depending on the version of the client / browser.\n+The websocket client code is 04 and 05 version, the server\n+supports 00/76 in text mode and 04 and 05 dynamically\n+per-connection depending on the version of the\n+client / browser.\n \n-2011-01-22 Andy Green \u003candy@warmcat.com\u003e\n+\n+External Polling Loop support\n+-----------------------------\n+\n+libwebsockets maintains an internal poll() array for all of its\n+sockets, but you can instead integrate the sockets into an\n+external polling array. That's needed if libwebsockets will\n+cooperate with an existing poll array maintained by another\n+server.\n+\n+Four callbacks LWS_CALLBACK_ADD_POLL_FD, LWS_CALLBACK_DEL_POLL_FD,\n+LWS_CALLBACK_SET_MODE_POLL_FD and LWS_CALLBACK_CLEAR_MODE_POLL_FD\n+appear in the callback for protocol 0 and allow interface code to\n+manage socket descriptors in other poll loops.\n+\n+2011-02-12 Andy Green \u003candy@warmcat.com\u003e\n \ndiff --git a/lib/libwebsockets.h b/lib/libwebsockets.h\nindex 5a870d7..b8a07c9 100644\n--- a/lib/libwebsockets.h\n+++ b/lib/libwebsockets.h\n@@ -132,6 +132,40 @@ struct libwebsocket_context;\n *\t\taccept another write packet without blocking. If it already\n *\t\twas able to take another packet without blocking, you'll get\n *\t\tthis callback at the next call to the service loop function.\n+ *\n+ *\tThe next four reasons are optional and only need taking care of if you\n+ * \twill be integrating libwebsockets sockets into an external polling\n+ * \tarray.\n+ * \n+ * \tLWS_CALLBACK_ADD_POLL_FD: libwebsocket deals with its poll() loop\n+ * \t\tinternally, but in the case you are integrating with another\n+ * \t\tserver you will need to have libwebsocket sockets share a\n+ * \t\tpolling array with the other server. This and the other\n+ * \t\tPOLL_FD related callbacks let you put your specialized\n+ * \t\tpoll array interface code in the callback for protocol 0, the\n+ * \t\tfirst protocol you support, usually the HTTP protocol in the\n+ * \t\tserving case. This callback happens when a socket needs to be\n+ *\t\tadded to the polling loop: @user contains the fd, and\n+ * \t\t@len is the events bitmap (like, POLLIN). If you are using the\n+ *\t\tinternal polling loop (the \u0022service\u0022 callback), you can just\n+ * \t\tignore these callbacks.\n+ *\n+ * \tLWS_CALLBACK_DEL_POLL_FD: This callback happens when a socket descriptor\n+ * \t\tneeds to be removed from an external polling array. @user is\n+ * \t\tthe socket desricptor. If you are using the internal polling\n+ * \t\tloop, you can just ignore it.\n+ *\n+ * \tLWS_CALLBACK_SET_MODE_POLL_FD: This callback happens when libwebsockets\n+ * \t\twants to modify the events for the socket descriptor in @user.\n+ *\t\tThe handler should OR @len on to the events member of the pollfd\n+ * \t\tstruct for this socket descriptor. If you are using the\n+ *\t\tinternal polling loop, you can just ignore it.\n+ *\n+ *\tLWS_CALLBACK_CLEAR_MODE_POLL_FD: This callback occurs when libwebsockets\n+ * \t\twants to modify the events for the socket descriptor in @user.\n+ *\t\tThe handler should AND ~@len on to the events member of the\n+ * \t\tpollfd struct for this socket descriptor. If you are using the\n+ *\t\tinternal polling loop, you can just ignore it.\n */\n extern int callback(struct libwebsocket *wsi,\n \t\t\t enum libwebsocket_callback_reasons reason, void *user,\n","s":{"c":1745908751,"u": 1247}}
],"g": 3071,"chitpc": 0,"ehitpc": 0,"indexed":0
,
"ab": 0, "si": 0, "db":0, "di":0, "sat":0, "lfc": "0000"}