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

Method UnaryCall

test/end2end_test.go:186–255  ·  view source on GitHub ↗
(ctx context.Context, in *testpb.SimpleRequest)

Source from the content-addressed store, hash-verified

184}
185
186func (s *testServer) UnaryCall(ctx context.Context, in *testpb.SimpleRequest) (*testpb.SimpleResponse, error) {
187 md, ok := metadata.FromIncomingContext(ctx)
188 if ok {
189 if _, exists := md[":authority"]; !exists {
190 return nil, status.Errorf(codes.DataLoss, "expected an :authority metadata: %v", md)
191 }
192 if s.setAndSendHeader {
193 if err := grpc.SetHeader(ctx, md); err != nil {
194 return nil, status.Errorf(status.Code(err), "grpc.SetHeader(_, %v) = %v, want <nil>", md, err)
195 }
196 if err := grpc.SendHeader(ctx, testMetadata2); err != nil {
197 return nil, status.Errorf(status.Code(err), "grpc.SendHeader(_, %v) = %v, want <nil>", testMetadata2, err)
198 }
199 } else if s.setHeaderOnly {
200 if err := grpc.SetHeader(ctx, md); err != nil {
201 return nil, status.Errorf(status.Code(err), "grpc.SetHeader(_, %v) = %v, want <nil>", md, err)
202 }
203 if err := grpc.SetHeader(ctx, testMetadata2); err != nil {
204 return nil, status.Errorf(status.Code(err), "grpc.SetHeader(_, %v) = %v, want <nil>", testMetadata2, err)
205 }
206 } else {
207 if err := grpc.SendHeader(ctx, md); err != nil {
208 return nil, status.Errorf(status.Code(err), "grpc.SendHeader(_, %v) = %v, want <nil>", md, err)
209 }
210 }
211 if err := grpc.SetTrailer(ctx, testTrailerMetadata); err != nil {
212 return nil, status.Errorf(status.Code(err), "grpc.SetTrailer(_, %v) = %v, want <nil>", testTrailerMetadata, err)
213 }
214 if s.multipleSetTrailer {
215 if err := grpc.SetTrailer(ctx, testTrailerMetadata2); err != nil {
216 return nil, status.Errorf(status.Code(err), "grpc.SetTrailer(_, %v) = %v, want <nil>", testTrailerMetadata2, err)
217 }
218 }
219 }
220 pr, ok := peer.FromContext(ctx)
221 if !ok {
222 return nil, status.Error(codes.DataLoss, "failed to get peer from ctx")
223 }
224 if pr.Addr == net.Addr(nil) {
225 return nil, status.Error(codes.DataLoss, "failed to get peer address")
226 }
227 if s.security != "" {
228 // Check Auth info
229 var authType, serverName string
230 switch info := pr.AuthInfo.(type) {
231 case credentials.TLSInfo:
232 authType = info.AuthType()
233 serverName = info.State.ServerName
234 default:
235 return nil, status.Error(codes.Unauthenticated, "Unknown AuthInfo type")
236 }
237 if authType != s.security {
238 return nil, status.Errorf(codes.Unauthenticated, "Wrong auth type: got %q, want %q", authType, s.security)
239 }
240 if serverName != "x.test.example.com" {
241 return nil, status.Errorf(codes.Unauthenticated, "Unknown server name %q", serverName)
242 }
243 }

Callers

nothing calls this directly

Calls 13

FromIncomingContextFunction · 0.92
SetHeaderFunction · 0.92
SendHeaderFunction · 0.92
SetTrailerFunction · 0.92
FromContextFunction · 0.92
newPayloadFunction · 0.85
CodeMethod · 0.80
GetResponseSizeMethod · 0.80
ErrorfMethod · 0.65
ErrorMethod · 0.65
AuthTypeMethod · 0.65
AddrMethod · 0.45

Tested by

no test coverage detected