labath added a comment.

In https://reviews.llvm.org/D31823#724334, @beanz wrote:

> @labath, I could adapt this into the `MainLoop` class, but I would actually 
> want to change how that class hierarchy is implemented. Regardless of the 
> event handling/polling model you use much of the code is identical between 
> the classes. I'd rather get rid of `MainLoopPosix` and `MainLoopBase` and 
> instead just implement a portable `MainLoop` class.
>
> In particular the difference between Windows `WSAPoll` and posix `poll(2)` is 
> the name of two functions, which makes the idea of having separate Windows 
> and Posix implementations just seem overly complicated to me, although 
> neither Darwin nor Windows have `ppoll` because it isn't POSIX, and Windows 
> doesn't have `pselect`, so there isn't a remotely portable way to wait on 
> file descriptors and signals... This is why we can't have nice things.


One extra thing you should be aware of is that unlike poll(2), WSAPoll only 
works on sockets. We currently have pieces of code ifdef-ed out on windows 
because we have no way to wait on pipes, and eventually I'd like to teach the 
MainLoop to do that as well. I'm not saying we should do that now, just 
pointing out that the implementations are likely to diverge in the future.

However, if you think that for the current minimal requirements (sockets on 
windows, signals and file descriptors on linux and netbsd, and file descriptors 
everywhere else) the cleanest implementation is a single class, then that's 
fine with me. We can revisit that decision when the need comes up.


https://reviews.llvm.org/D31823



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to