ashgti wrote:

> @ashgti Do you think we would adopt non-blocking I/O in `lldb-dap`? Since 
> we're using separate threads there, we can afford using long timeouts, but 
> maybe we'd like to use the main loop there too with non-blocking I/O. If not, 
> and if I were to implement the non-blocking support in MCP directly using 
> Pavel's snippet, would you want to move the `JSONTransport` back into 
> lldb-dap (and drop the JSON RPC variant) or keep it in Host?

lldb-dap today is most often used by communicating over stdin/stdout.

When adding support for lldb-dap to have a server mode, the clients connect 
over a socket (unix or tcp). I wanted to be able to gracefully disconnect the 
clients if the server is interrupted. We don't strictly need to have 
non-blocking IO for lldb-dap to work in both cases, but it helps for the 
graceful disconnects. Right now, we sort of ignore the fact that the Transport 
never times out on Windows when running over stdin/stdout.

In an ideal world we'd have uniform support for this, but from my understanding 
of Win32 and the APIs we're using, I wasn't able to figure out a solution for 
reading from stdin with a timeout.

There are ways we could work around this, like always connecting over a socket 
on Windows instead of stdin/stdout but that would be a pretty big change and 
I'm not sure how many users there are of the lldb-dap binary on Windows that 
would be affected by the change.

I can try to take another look at the Win32 APIs to see if there is an 
alternative because it would be nice if we had a uniform API surface for this.

https://github.com/llvm/llvm-project/pull/144610
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to