well-typed / grapesy

Native Haskell gRPC client and server based on `http2`
Other
31 stars 4 forks source link

Properly implement "half-closed" semantics #108

Closed edsko closed 3 months ago

edsko commented 3 months ago

The client can indicate to the server that no more messages are coming by putting the connection in half closed state; however, the server cannot do the same: when the server sends the trailers, the RPC is considered over. This was a surprisingly subtle change to make, but the changes we make her paves the way for other features too, such as automatic retries.

edsko commented 3 months ago

Verified interoperability with Python, C++, Go and Java, both with grapesy as server and with grapesy as client. Also added a self-interop test as part of CI now.