feat(xmtp_api_grpc): bidi_stream transport primitive#3770
Conversation
|
Claude finished @tylerhawkes's task —— View job Code Review CompletedReview checklist:
Review FeedbackReviewed: 2026-06-16 21:05 UTC The implementation is well-structured and follows existing patterns. One observation and minor suggestion: Correctness & Pattern Consistencyclient.rs:194-219 - The DocumentationConsider adding a brief doc comment on traits.rs:150-160 - Default implementation correctly returns an unsupported-transport error. The parameter suppression via Coverage: The 14% patch coverage reported by Codecov is expected for this primitive-level infrastructure. Testing will naturally come in stack 3/4 when higher-level subscription logic consumes this transport. Overall: LGTM - solid foundation for XIP-83 bidi streaming. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## tyler/xip83-1-subscribe-protos #3770 +/- ##
=================================================================
Coverage ? 84.41%
=================================================================
Files ? 408
Lines ? 59796
Branches ? 0
=================================================================
Hits ? 50477
Misses ? 9319
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
5329964 to
ba3c4de
Compare
2a66968 to
5030100
Compare
ba3c4de to
cf43cdd
Compare
5030100 to
9eb4ed4
Compare
cf43cdd to
7ef18f0
Compare
9eb4ed4 to
21b315c
Compare
…#3769) **Stack 1/4** of the XIP-83 bidi client lane: #3769 → #3770 → #3771 → #3772. Regenerated `xmtp.mls.api.v1` from xmtp/proto#337: the bidirectional `Subscribe` RPC with versioned `SubscribeRequest`/`SubscribeResponse`, id-based `Mutate` (cursors, `history_only`), `Ping`/`Pong`, `TopicsLive`, `CATCHUP_COMPLETE`, and STARTED `capabilities`. Purely additive (+1,896 generated lines); `proto_version` pinned to that branch's sha — draft until the proto PR merges.
…efault-unsupported elsewhere) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
7ef18f0 to
af6ab11
Compare
Stack 2/4 of the XIP-83 bidi client lane: #3769 → #3770 → #3771 → #3772.
Adds one primitive to the protocol-agnostic
Clienttrait:bidi_stream(request, path, BoxDynStream<Bytes>) -> http::Response<BytesStream>— outbound stream of encoded protobuf messages in, inbound message stream out. Default implementation errors ("not supported by this transport"), so gRPC-Web/wasm and mocks are untouched; forwarded through the&T/Box/Arc/boxed-client impls.GrpcClientoverrides it natively via tonicGrpc::streaming+ the existingTransparentCodec, reusing the NonBlocking stream machinery verbatim.build_tonic_requestmade generic over the body type.🤖 Generated with Claude Code
Note
Add
bidi_streambidirectional streaming transport primitive toxmtp_api_grpcbidi_streammethod to theClienttrait in traits.rs that accepts an outboundBoxDynStream<'static, Bytes>and returns an inboundBytesStream; the default implementation returns an unsupported-transport error.bidi_streamfor non-wasmGrpcClientin client.rs usingTransparentCodecandNonBlockingStreamRequestover HTTP/2.bidi_streamthroughBoxedClientand all blanket forwarding impls (&T,&mut T,Arc<T>).Subscribebidirectional RPC and associatedSubscribeRequest/SubscribeResponsemessage types including serde impls.build_tonic_requestgeneric over the request body type to support streaming use cases.Macroscope summarized af6ab11.