MCPcopy
hub / github.com/grpc/grpc-go / HalfDuplexCall

Method HalfDuplexCall

interop/test_utils.go:860–891  ·  view source on GitHub ↗
(stream testgrpc.TestService_HalfDuplexCallServer)

Source from the content-addressed store, hash-verified

858}
859
860func (s *testServer) HalfDuplexCall(stream testgrpc.TestService_HalfDuplexCallServer) error {
861 var msgBuf []*testpb.StreamingOutputCallRequest
862 for {
863 in, err := stream.Recv()
864 if err == io.EOF {
865 // read done.
866 break
867 }
868 if err != nil {
869 return err
870 }
871 msgBuf = append(msgBuf, in)
872 }
873 for _, m := range msgBuf {
874 cs := m.GetResponseParameters()
875 for _, c := range cs {
876 if us := c.GetIntervalUs(); us > 0 {
877 time.Sleep(time.Duration(us) * time.Microsecond)
878 }
879 pl, err := serverNewPayload(m.GetResponseType(), c.GetSize())
880 if err != nil {
881 return err
882 }
883 if err := stream.Send(&testpb.StreamingOutputCallResponse{
884 Payload: pl,
885 }); err != nil {
886 return err
887 }
888 }
889 }
890 return nil
891}
892
893// DoORCAPerRPCTest performs a unary RPC that enables ORCA per-call reporting
894// and verifies the load report sent back to the LB policy's Done callback.

Callers

nothing calls this directly

Calls 7

serverNewPayloadFunction · 0.85
GetResponseParametersMethod · 0.80
GetIntervalUsMethod · 0.80
GetSizeMethod · 0.80
RecvMethod · 0.65
SendMethod · 0.65
GetResponseTypeMethod · 0.45

Tested by

no test coverage detected