(stream testgrpc.TestService_FullDuplexCallServer)
| 306 | } |
| 307 | |
| 308 | func (s *testServer) FullDuplexCall(stream testgrpc.TestService_FullDuplexCallServer) error { |
| 309 | md, ok := metadata.FromIncomingContext(stream.Context()) |
| 310 | if ok { |
| 311 | if s.setAndSendHeader { |
| 312 | if err := stream.SetHeader(md); err != nil { |
| 313 | return status.Errorf(status.Code(err), "%v.SetHeader(_, %v) = %v, want <nil>", stream, md, err) |
| 314 | } |
| 315 | if err := stream.SendHeader(testMetadata2); err != nil { |
| 316 | return status.Errorf(status.Code(err), "%v.SendHeader(_, %v) = %v, want <nil>", stream, testMetadata2, err) |
| 317 | } |
| 318 | } else if s.setHeaderOnly { |
| 319 | if err := stream.SetHeader(md); err != nil { |
| 320 | return status.Errorf(status.Code(err), "%v.SetHeader(_, %v) = %v, want <nil>", stream, md, err) |
| 321 | } |
| 322 | if err := stream.SetHeader(testMetadata2); err != nil { |
| 323 | return status.Errorf(status.Code(err), "%v.SetHeader(_, %v) = %v, want <nil>", stream, testMetadata2, err) |
| 324 | } |
| 325 | } else { |
| 326 | if err := stream.SendHeader(md); err != nil { |
| 327 | return status.Errorf(status.Code(err), "%v.SendHeader(%v) = %v, want %v", stream, md, err, nil) |
| 328 | } |
| 329 | } |
| 330 | stream.SetTrailer(testTrailerMetadata) |
| 331 | if s.multipleSetTrailer { |
| 332 | stream.SetTrailer(testTrailerMetadata2) |
| 333 | } |
| 334 | } |
| 335 | for { |
| 336 | in, err := stream.Recv() |
| 337 | if err == io.EOF { |
| 338 | // read done. |
| 339 | return nil |
| 340 | } |
| 341 | if err != nil { |
| 342 | // to facilitate testSvrWriteStatusEarlyWrite |
| 343 | if status.Code(err) == codes.ResourceExhausted { |
| 344 | return status.Errorf(codes.Internal, "fake error for test testSvrWriteStatusEarlyWrite. true error: %s", err.Error()) |
| 345 | } |
| 346 | return err |
| 347 | } |
| 348 | cs := in.GetResponseParameters() |
| 349 | for _, c := range cs { |
| 350 | if us := c.GetIntervalUs(); us > 0 { |
| 351 | time.Sleep(time.Duration(us) * time.Microsecond) |
| 352 | } |
| 353 | |
| 354 | payload, err := newPayload(in.GetResponseType(), c.GetSize()) |
| 355 | if err != nil { |
| 356 | return err |
| 357 | } |
| 358 | |
| 359 | if err := stream.Send(&testpb.StreamingOutputCallResponse{ |
| 360 | Payload: payload, |
| 361 | }); err != nil { |
| 362 | // to facilitate testSvrWriteStatusEarlyWrite |
| 363 | if status.Code(err) == codes.ResourceExhausted { |
| 364 | return status.Errorf(codes.Internal, "fake error for test testSvrWriteStatusEarlyWrite. true error: %s", err.Error()) |
| 365 | } |
nothing calls this directly
no test coverage detected