(stream testgrpc.BenchmarkService_StreamingCallServer)
| 90 | const PreloadMsgSizeHeader = "preload-msg-size" |
| 91 | |
| 92 | func (s *testServer) StreamingCall(stream testgrpc.BenchmarkService_StreamingCallServer) error { |
| 93 | preloadMsgSize := 0 |
| 94 | if md, ok := metadata.FromIncomingContext(stream.Context()); ok && len(md[PreloadMsgSizeHeader]) != 0 { |
| 95 | val := md[PreloadMsgSizeHeader][0] |
| 96 | var err error |
| 97 | preloadMsgSize, err = strconv.Atoi(val) |
| 98 | if err != nil { |
| 99 | return fmt.Errorf("%q header value is not an integer: %s", PreloadMsgSizeHeader, err) |
| 100 | } |
| 101 | } |
| 102 | |
| 103 | if md, ok := metadata.FromIncomingContext(stream.Context()); ok && len(md[UnconstrainedStreamingHeader]) != 0 { |
| 104 | return s.UnconstrainedStreamingCall(stream, preloadMsgSize) |
| 105 | } |
| 106 | response := &testpb.SimpleResponse{ |
| 107 | Payload: new(testpb.Payload), |
| 108 | } |
| 109 | preloadedResponse := &grpc.PreparedMsg{} |
| 110 | if preloadMsgSize > 0 { |
| 111 | setPayload(response.Payload, testpb.PayloadType_COMPRESSABLE, preloadMsgSize) |
| 112 | if err := preloadedResponse.Encode(stream, response); err != nil { |
| 113 | return err |
| 114 | } |
| 115 | } |
| 116 | in := new(testpb.SimpleRequest) |
| 117 | for { |
| 118 | // use ServerStream directly to reuse the same testpb.SimpleRequest object |
| 119 | err := stream.(grpc.ServerStream).RecvMsg(in) |
| 120 | if err == io.EOF { |
| 121 | // read done. |
| 122 | return nil |
| 123 | } |
| 124 | if err != nil { |
| 125 | return err |
| 126 | } |
| 127 | if preloadMsgSize > 0 { |
| 128 | err = stream.SendMsg(preloadedResponse) |
| 129 | } else { |
| 130 | setPayload(response.Payload, in.ResponseType, int(in.ResponseSize)) |
| 131 | err = stream.Send(response) |
| 132 | } |
| 133 | if err != nil { |
| 134 | return err |
| 135 | } |
| 136 | } |
| 137 | } |
| 138 | |
| 139 | func (s *testServer) UnconstrainedStreamingCall(stream testgrpc.BenchmarkService_StreamingCallServer, preloadMsgSize int) error { |
| 140 | maxSleep := 0 |
nothing calls this directly
no test coverage detected