[Lldb-commits] [lldb] [lldb-dap] Refactoring IOStream into Transport handler. (PR #130026)

John Harrison via lldb-commits lldb-commits at lists.llvm.org
Tue Mar 11 13:15:21 PDT 2025


ashgti wrote:

Apparently rebasing my changes on a main caused GH to not let me reply to some comments directly (still learning GH's PR nuances...).

>From labath
> That probably fine, but I am pretty sure that being abstract doesn't prevent you from [forming a reference](https://godbolt.org/z/Ejcxve5qq) to a class. You must have tried to copy the object somewhere. The main advantage of a reference is that it guarantees that the pointer is not null.

Should be fixed now, I thought I had tried this but I get a compiler error I misinterpreted as not being able to use a reference.

> Okay, I see what you're doing now. ReadUntil is reading the string one character at a time, which means it can never read past the \r\n terminator. Not particularly efficient, but I suppose it will do given that this just needs to read a couple of bytes.

There is a slight optimization in `ReadUntil` that the first read will read up to the `delimiter`'s length first. But then its only reading 1 byte at a time until we get the size from the header.

> Another option would be to return an Expected<optional<Message>> with a nullopt meaning "EOF". It's a bit of a mouthful, but we do have APIs like that, and it doesn't look like this function will be used from that many places.

Updated to use an `Expected<optional<Message>>` and I ended up making the only acceptable place to encounter an EOF is the start of a message header, otherwise we have a partial message that is error in the protocol.

https://github.com/llvm/llvm-project/pull/130026


More information about the lldb-commits mailing list