MCPcopy
hub / github.com/grafana/dskit / HandleRPC

Method HandleRPC

middleware/grpc_stats.go:77–111  ·  view source on GitHub ↗
(ctx context.Context, rpcStats stats.RPCStats)

Source from the content-addressed store, hash-verified

75}
76
77func (g *grpcStatsHandler) HandleRPC(ctx context.Context, rpcStats stats.RPCStats) {
78 obs, ok := ctx.Value(contextKeyRPCObservers).(*rpcObservers)
79 if !ok {
80 return
81 }
82
83 switch s := rpcStats.(type) {
84 case *stats.Begin:
85 obs.inflightRequests.Inc()
86 if g.grpcConcurrentStreamsTracker != nil {
87 if connID, hasConnID := ctx.Value(contextKeyConnID).(string); hasConnID {
88 g.grpcConcurrentStreamsTracker.OpenStream(connID)
89 }
90 }
91 case *stats.End:
92 obs.inflightRequests.Dec()
93 if g.grpcConcurrentStreamsTracker != nil {
94 if connID, hasConnID := ctx.Value(contextKeyConnID).(string); hasConnID {
95 g.grpcConcurrentStreamsTracker.CloseStream(connID)
96 }
97 }
98 case *stats.InHeader:
99 // Ignore incoming headers.
100 case *stats.InPayload:
101 obs.receivedPayloadSize.Observe(float64(s.WireLength))
102 case *stats.InTrailer:
103 // Ignore incoming trailers.
104 case *stats.OutHeader:
105 // Ignore outgoing headers.
106 case *stats.OutPayload:
107 obs.sentPayloadSize.Observe(float64(s.WireLength))
108 case *stats.OutTrailer:
109 // Ignore outgoing trailers. OutTrailer doesn't have valid WireLength (there is a deprecated field, always set to 0).
110 }
111}
112
113func (g *grpcStatsHandler) TagConn(ctx context.Context, conn *stats.ConnTagInfo) context.Context {
114 if g.grpcConcurrentStreamsTracker != nil {

Calls 2

OpenStreamMethod · 0.80
CloseStreamMethod · 0.80