MCPcopy Index your code
hub / github.com/fullstorydev/grpcurl / invokeServerStream

Function invokeServerStream

invoke.go:247–298  ·  view source on GitHub ↗
(ctx context.Context, stub grpcdynamic.Stub, md *desc.MethodDescriptor, handler InvocationEventHandler,
	requestData RequestSupplier, req proto.Message)

Source from the content-addressed store, hash-verified

245}
246
247func invokeServerStream(ctx context.Context, stub grpcdynamic.Stub, md *desc.MethodDescriptor, handler InvocationEventHandler,
248 requestData RequestSupplier, req proto.Message) error {
249
250 err := requestData(req)
251 if err != nil && err != io.EOF {
252 return fmt.Errorf("error getting request data: %v", err)
253 }
254 if err != io.EOF {
255 // verify there is no second message, which is a usage error
256 err := requestData(req)
257 if err == nil {
258 return fmt.Errorf("method %q is a server-streaming RPC, but request data contained more than 1 message", md.GetFullyQualifiedName())
259 } else if err != io.EOF {
260 return fmt.Errorf("error getting request data: %v", err)
261 }
262 }
263
264 // Now we can actually invoke the RPC!
265 str, err := stub.InvokeRpcServerStream(ctx, md, req)
266
267 if str != nil {
268 if respHeaders, err := str.Header(); err == nil {
269 handler.OnReceiveHeaders(respHeaders)
270 }
271 }
272
273 // Download each response message
274 for err == nil {
275 var resp proto.Message
276 resp, err = str.RecvMsg()
277 if err != nil {
278 if err == io.EOF {
279 err = nil
280 }
281 break
282 }
283 handler.OnReceiveResponse(resp)
284 }
285
286 stat, ok := status.FromError(err)
287 if !ok {
288 // Error codes sent from the server will get printed differently below.
289 // So just bail for other kinds of errors here.
290 return fmt.Errorf("grpc call for %q failed: %v", md.GetFullyQualifiedName(), err)
291 }
292
293 if str != nil {
294 handler.OnReceiveTrailers(stat, str.Trailer())
295 }
296
297 return nil
298}
299
300func invokeBidi(ctx context.Context, stub grpcdynamic.Stub, md *desc.MethodDescriptor, handler InvocationEventHandler,
301 requestData RequestSupplier, req proto.Message) error {

Callers 1

InvokeRPCFunction · 0.85

Calls 4

RecvMsgMethod · 0.80
OnReceiveHeadersMethod · 0.65
OnReceiveResponseMethod · 0.65
OnReceiveTrailersMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…