mirror of https://github.com/knative/client.git
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
package datacodec
|
|
|
|
import (
|
|
"github.com/cloudevents/sdk-go/v2/observability"
|
|
"go.opencensus.io/stats"
|
|
"go.opencensus.io/stats/view"
|
|
)
|
|
|
|
var (
|
|
// LatencyMs measures the latency in milliseconds for the CloudEvents generic
|
|
// codec data methods.
|
|
LatencyMs = stats.Float64("cloudevents.io/sdk-go/datacodec/latency", "The latency in milliseconds for the CloudEvents generic data codec methods.", "ms")
|
|
)
|
|
|
|
var (
|
|
// LatencyView is an OpenCensus view that shows data codec method latency.
|
|
LatencyView = &view.View{
|
|
Name: "datacodec/latency",
|
|
Measure: LatencyMs,
|
|
Description: "The distribution of latency inside of the generic data codec for CloudEvents.",
|
|
Aggregation: view.Distribution(0, .01, .1, 1, 10, 100, 1000, 10000),
|
|
TagKeys: observability.LatencyTags(),
|
|
}
|
|
)
|
|
|
|
type observed int32
|
|
|
|
// Adheres to Observable
|
|
var _ observability.Observable = observed(0)
|
|
|
|
const (
|
|
reportEncode observed = iota
|
|
reportDecode
|
|
)
|
|
|
|
// MethodName implements Observable.MethodName
|
|
func (o observed) MethodName() string {
|
|
switch o {
|
|
case reportEncode:
|
|
return "encode"
|
|
case reportDecode:
|
|
return "decode"
|
|
default:
|
|
return "unknown"
|
|
}
|
|
}
|
|
|
|
// LatencyMs implements Observable.LatencyMs
|
|
func (o observed) LatencyMs() *stats.Float64Measure {
|
|
return LatencyMs
|
|
}
|