<div dir="ltr"><div class="gmail_default" style="font-size:x-small">Hi Andy,</div><div class="gmail_default" style="font-size:x-small"><br></div><div class="gmail_default" style="font-size:x-small">Sorry I have been using 3.0 for months also.</div><div class="gmail_default" style="font-size:x-small"><br></div><div class="gmail_default" style="font-size:x-small">My event loop is epoll, and the fact that all lws is running on one thread simplify the MT issues.</div><div class="gmail_default" style="font-size:x-small">So the POLL_FD callbacks work fine for me.<br></div><div class="gmail_default" style="font-size:x-small"><br></div><div class="gmail_default" style="font-size:x-small">Thanks,</div><div class="gmail_default" style="font-size:x-small">Brice.</div><div class="gmail_default" style="font-size:x-small"><br></div><div class="gmail_default" style="font-size:x-small"><br></div><div class="gmail_default" style="font-size:x-small"><br></div><div class="gmail_default" style="font-size:x-small"><br></div><div class="gmail_default" style="font-size:x-small"><br></div><div class="gmail_default" style="font-size:x-small"><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Sep 24, 2018 at 1:25 PM Andy Green <<a href="mailto:andy@warmcat.com">andy@warmcat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
On September 25, 2018 12:56:27 AM GMT+08:00, Brice Hamon <<a href="mailto:brice@ydotm.com" target="_blank">brice@ydotm.com</a>> wrote:<br>
>Nicolas,<br>
><br>
>I have been using libwebsocket with an external event epoll loop for<br>
>years<br>
>now.<br>
>It is quite straightforward and very stable.<br>
><br>
>I have the libwebsocket running inside a thread from my framework. That<br>
>thread has all the epolling mechanism build in.<br>
>I use the lws xxx_POLL_FD callbacks (in the http[0] protocol) to add,<br>
>modify and remove a file descriptor, like for a normal fd except that<br>
>these<br>
>fds are created by lws.<br>
><br>
>The rest of the lws callback mechanism is working as it should, nothing<br>
>special to do here.<br>
><br>
>I hope it helps,<br>
><br>
>Andy, I hope this won't be removed for V3.0 ? Thanks.<br>
<br>
V3.0 has been around for some months... no I don't plan to get rid of external poll, but it's definitely not preferred compared with the event libs.  But if your 'event loop' is poll(), and you want everything, lws and your code, in one thread and one poll() wait, the external poll stuff is the simplest way to do it, although it's a bit clunky.<br>
<br>
(A possible alternative now is use lws RAW sockets and file wsis for what was outside lws, then if everything is in lws using lws event loop, you can switch lws event loop implementation how you like.  But depending on what that external code is, it can be impractical to try to unify it.)<br>
<br>
If you want epoll(), it's also supported by all the eventlib options... eg libuv has the advantage the poll backend is platform-specific and opaque, it chooses whatever works best on the platform.  If you were starting from scratch, unless you have a special reason to use epoll() directly I'd recommend libuv.  The eventlibs support multithreaded service as well, with an event loop per service thread.<br>
<br>
-Andy<br>
<br>
>Brice.<br>
</blockquote></div>