Skip to content

Conversation

@ryanfowler
Copy link
Owner

Stream multiple JSON objects as individual gRPC frames using io.Pipe for incremental delivery. Detection is automatic via the proto schema's MethodDescriptor.IsStreamingClient(), requiring no new CLI flags.

Stream multiple JSON objects as individual gRPC frames using io.Pipe
for incremental delivery. Detection is automatic via the proto schema's
MethodDescriptor.IsStreamingClient(), requiring no new CLI flags.
@ryanfowler ryanfowler requested a review from Copilot February 1, 2026 21:36
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds support for gRPC client-side and bidirectional streaming by enabling multiple JSON objects to be streamed as individual gRPC frames. The implementation uses io.Pipe for incremental delivery and automatically detects streaming methods via the proto schema's MethodDescriptor.IsStreamingClient().

Changes:

  • Modified setupGRPC to detect and return whether a method is client-streaming
  • Added streamGRPCRequest function to handle streaming multiple JSON objects as separate gRPC frames
  • Updated request processing logic to handle client-streaming vs unary/server-streaming differently
  • Added comprehensive test coverage for streaming scenarios
  • Updated documentation to reflect streaming support

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
internal/fetch/proto.go Added streamGRPCRequest function and modified setupGRPC to detect client-streaming methods
internal/fetch/fetch.go Updated request processing to handle client-streaming separately from unary calls
internal/fetch/proto_test.go Added unit tests for streamGRPCRequest covering various input scenarios
integration/integration_test.go Added integration tests for client-streaming gRPC with multiple test cases
docs/grpc.md Updated documentation to describe client and bidirectional streaming support

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@ryanfowler ryanfowler merged commit b0d620b into main Feb 1, 2026
10 checks passed
@ryanfowler ryanfowler deleted the grpc-client-streaming branch February 1, 2026 21:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant