jasonmolenda wrote:

I apologize for the delay in responding, I am wrong and this is correct.  When 
we get one or more notify packets but no actual response, we will read it/them 
with
```
    size_t bytes_read = Read(buffer, sizeof(buffer), timeout, status, &error);
```

then iterate over the received packet(s) with one or more calls to 
`CheckForPacket`.  The final of which will find nothing in the incoming buffer 
and return `PacketType::Invalid`.  That puts us in

```
    } else {
      switch (status) {
      case eConnectionStatusSuccess:
        // printf ("status = success but error = %s\n",
        // error.AsCString("<invalid>"));
        break;
```

and we loop again to
```
  while (IsConnected() && !timed_out) {
    size_t bytes_read = Read(buffer, sizeof(buffer), timeout, status, &error);
```

and wait for the next notify packet, or real response.  

Could you please add a comment to this `case eConnectionStatusSuccess` 
explaining that we received a notify packet only; we don't have the actual 
response yet so we need to continue looping for it.  This case is important 
with notify packets, and the existing comment might lead someone to wonder why 
it exists. 

And thanks for adding the test case that sends a notify, then sends the actual 
reply separately - that will detect if anyone removes this `case` statement in 
the future too.

This PR looks good to me, I'd like to see a comment on that `case` statement 
but that's my only feedback.  Thanks!

https://github.com/llvm/llvm-project/pull/202556
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to