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

Method FullDuplexCall

interop/test_utils.go:805–858  ·  view source on GitHub ↗
(stream testgrpc.TestService_FullDuplexCallServer)

Source from the content-addressed store, hash-verified

803}
804
805func (s *testServer) FullDuplexCall(stream testgrpc.TestService_FullDuplexCallServer) error {
806 if md, ok := metadata.FromIncomingContext(stream.Context()); ok {
807 if initialMetadata, ok := md[initialMetadataKey]; ok {
808 header := metadata.Pairs(initialMetadataKey, initialMetadata[0])
809 stream.SendHeader(header)
810 }
811 if trailingMetadata, ok := md[trailingMetadataKey]; ok {
812 trailer := metadata.Pairs(trailingMetadataKey, trailingMetadata[0])
813 stream.SetTrailer(trailer)
814 }
815 }
816 hasORCALock := false
817 for {
818 in, err := stream.Recv()
819 if err == io.EOF {
820 // read done.
821 return nil
822 }
823 if err != nil {
824 return err
825 }
826 st := in.GetResponseStatus()
827 if st != nil && st.Code != 0 {
828 return status.Error(codes.Code(st.Code), st.Message)
829 }
830
831 if r, orcaData := s.metricsRecorder, in.GetOrcaOobReport(); r != nil && orcaData != nil {
832 // Transfer the request's OOB ORCA data to the server metrics recorder
833 // in the server, if present.
834 if !hasORCALock {
835 s.orcaMu.Lock()
836 defer s.orcaMu.Unlock()
837 hasORCALock = true
838 }
839 setORCAMetrics(r, orcaData)
840 }
841
842 cs := in.GetResponseParameters()
843 for _, c := range cs {
844 if us := c.GetIntervalUs(); us > 0 {
845 time.Sleep(time.Duration(us) * time.Microsecond)
846 }
847 pl, err := serverNewPayload(in.GetResponseType(), c.GetSize())
848 if err != nil {
849 return err
850 }
851 if err := stream.Send(&testpb.StreamingOutputCallResponse{
852 Payload: pl,
853 }); err != nil {
854 return err
855 }
856 }
857 }
858}
859
860func (s *testServer) HalfDuplexCall(stream testgrpc.TestService_HalfDuplexCallServer) error {
861 var msgBuf []*testpb.StreamingOutputCallRequest

Callers

nothing calls this directly

Calls 15

FromIncomingContextFunction · 0.92
PairsFunction · 0.92
ErrorFunction · 0.92
CodeTypeAlias · 0.92
setORCAMetricsFunction · 0.85
serverNewPayloadFunction · 0.85
GetOrcaOobReportMethod · 0.80
GetResponseParametersMethod · 0.80
GetIntervalUsMethod · 0.80
GetSizeMethod · 0.80
ContextMethod · 0.65
SendHeaderMethod · 0.65

Tested by

no test coverage detected