go-sdk/internal
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Rob Findley c03cd684ab internal/jsonrpc2: allow asynchronous writes
This CL introduces a fundamental change to the jsonrpc2 library:
connection writes, which were previously serialized by the jsonrpc2
library itself, are now allowed to be concurrent.

The change in semantics of the jsonrpc2 library should hopefully be easy
to review, since moving the synchronization to the Writer implementation
is equivalent to the previous logic. However, this change is critical
for the streamable client transport, because it allows for concurrent
http requests to the server.

Consider that a write is a POST to the server, and we don't know that
write succeeded until we get the response header. Previously, we had the
following problem: if the client POSTs a request, and the server blocks
its response on a request made through the hanging GET, the client was
unable to respond because the initial POST is still blocked. We could
update our streamable server transport to force a flush of the response
headers, but we can't guarantee that other servers behave the same way.
Fundamentally, writes in the spec are asynchronous, and we need to
support that.
2025-08-08 12:38:43 -04:00
..
jsonrpc2 internal/jsonrpc2: allow asynchronous writes 2025-08-08 12:38:43 -04:00
readme feat(devcontainer): Adds Dev Container configuration (#154) 2025-07-30 12:54:41 -04:00
util internal/util: move FieldJSONInfo into jsonschema/util (#251) 2025-08-06 12:07:57 -04:00
xcontext x/tools: modernize interface{} -> any 2025-02-19 15:14:27 -08:00