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

Function streamInterceptor

examples/features/metadata_interceptor/server/main.go:98–120  ·  view source on GitHub ↗
(srv any, ss grpc.ServerStream, _ *grpc.StreamServerInfo, handler grpc.StreamHandler)

Source from the content-addressed store, hash-verified

96}
97
98func streamInterceptor(srv any, ss grpc.ServerStream, _ *grpc.StreamServerInfo, handler grpc.StreamHandler) error {
99 md, ok := metadata.FromIncomingContext(ss.Context())
100 if !ok {
101 return errMissingMetadata
102 }
103
104 // Create and set metadata from interceptor to server.
105 md.Append("key1", "value1")
106 ctx := metadata.NewIncomingContext(ss.Context(), md)
107
108 // Call the handler to complete the normal execution of the RPC.
109 err := handler(srv, &wrappedStream{ss, ctx})
110
111 // Create and set header metadata from interceptor to client.
112 header := metadata.Pairs("header-key", "val")
113 ss.SetHeader(header)
114
115 // Create and set trailer metadata from interceptor to client.
116 trailer := metadata.Pairs("trailer-key", "val")
117 ss.SetTrailer(trailer)
118
119 return err
120}
121
122func (s *server) BidirectionalStreamingEcho(stream pb.Echo_BidirectionalStreamingEchoServer) error {
123 fmt.Printf("--- BidirectionalStreamingEcho ---\n")

Callers

nothing calls this directly

Calls 7

FromIncomingContextFunction · 0.92
NewIncomingContextFunction · 0.92
PairsFunction · 0.92
AppendMethod · 0.80
ContextMethod · 0.65
SetHeaderMethod · 0.65
SetTrailerMethod · 0.65

Tested by

no test coverage detected