| // Copyright 2016 Michal Witkowski. All Rights Reserved. |
| // See LICENSE for licensing terms. |
| |
| package grpc_prometheus |
| |
| import ( |
| "time" |
| |
| "google.golang.org/grpc/codes" |
| ) |
| |
| type clientReporter struct { |
| metrics *ClientMetrics |
| rpcType grpcType |
| serviceName string |
| methodName string |
| startTime time.Time |
| } |
| |
| func newClientReporter(m *ClientMetrics, rpcType grpcType, fullMethod string) *clientReporter { |
| r := &clientReporter{ |
| metrics: m, |
| rpcType: rpcType, |
| } |
| if r.metrics.clientHandledHistogramEnabled { |
| r.startTime = time.Now() |
| } |
| r.serviceName, r.methodName = splitMethodName(fullMethod) |
| r.metrics.clientStartedCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc() |
| return r |
| } |
| |
| func (r *clientReporter) ReceivedMessage() { |
| r.metrics.clientStreamMsgReceived.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc() |
| } |
| |
| func (r *clientReporter) SentMessage() { |
| r.metrics.clientStreamMsgSent.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Inc() |
| } |
| |
| func (r *clientReporter) Handled(code codes.Code) { |
| r.metrics.clientHandledCounter.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName, code.String()).Inc() |
| if r.metrics.clientHandledHistogramEnabled { |
| r.metrics.clientHandledHistogram.WithLabelValues(string(r.rpcType), r.serviceName, r.methodName).Observe(time.Since(r.startTime).Seconds()) |
| } |
| } |