Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201028153306-37f0764111ff / internal / event / export / ocagent / wire / metrics.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201028153306-37f0764111ff/internal/event/export/ocagent/wire/metrics.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201028153306-37f0764111ff/internal/event/export/ocagent/wire/metrics.go
new file mode 100644 (file)
index 0000000..4cfdb88
--- /dev/null
@@ -0,0 +1,198 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package wire
+
+import (
+       "encoding/json"
+       "fmt"
+)
+
+type ExportMetricsServiceRequest struct {
+       Node     *Node     `json:"node,omitempty"`
+       Metrics  []*Metric `json:"metrics,omitempty"`
+       Resource *Resource `json:"resource,omitempty"`
+}
+
+type Metric struct {
+       MetricDescriptor *MetricDescriptor `json:"metric_descriptor,omitempty"`
+       Timeseries       []*TimeSeries     `json:"timeseries,omitempty"`
+       Resource         *Resource         `json:"resource,omitempty"`
+}
+
+type MetricDescriptor struct {
+       Name        string                `json:"name,omitempty"`
+       Description string                `json:"description,omitempty"`
+       Unit        string                `json:"unit,omitempty"`
+       Type        MetricDescriptor_Type `json:"type,omitempty"`
+       LabelKeys   []*LabelKey           `json:"label_keys,omitempty"`
+}
+
+type MetricDescriptor_Type int32
+
+const (
+       MetricDescriptor_UNSPECIFIED             MetricDescriptor_Type = 0
+       MetricDescriptor_GAUGE_INT64             MetricDescriptor_Type = 1
+       MetricDescriptor_GAUGE_DOUBLE            MetricDescriptor_Type = 2
+       MetricDescriptor_GAUGE_DISTRIBUTION      MetricDescriptor_Type = 3
+       MetricDescriptor_CUMULATIVE_INT64        MetricDescriptor_Type = 4
+       MetricDescriptor_CUMULATIVE_DOUBLE       MetricDescriptor_Type = 5
+       MetricDescriptor_CUMULATIVE_DISTRIBUTION MetricDescriptor_Type = 6
+       MetricDescriptor_SUMMARY                 MetricDescriptor_Type = 7
+)
+
+type LabelKey struct {
+       Key         string `json:"key,omitempty"`
+       Description string `json:"description,omitempty"`
+}
+
+type TimeSeries struct {
+       StartTimestamp *Timestamp    `json:"start_timestamp,omitempty"`
+       LabelValues    []*LabelValue `json:"label_values,omitempty"`
+       Points         []*Point      `json:"points,omitempty"`
+}
+
+type LabelValue struct {
+       Value    string `json:"value,omitempty"`
+       HasValue bool   `json:"has_value,omitempty"`
+}
+
+type Point struct {
+       Timestamp *Timestamp `json:"timestamp,omitempty"`
+       Value     PointValue `json:"value,omitempty"`
+}
+
+type PointInt64Value struct {
+       Int64Value int64 `json:"int64Value,omitempty"`
+}
+
+// MarshalJSON creates JSON formatted the same way as jsonpb so that the
+// OpenCensus service can correctly determine the underlying value type.
+// This custom MarshalJSON exists because,
+// by default *Point is JSON marshalled as:
+//     {"value": {"int64Value": 1}}
+// but it should be marshalled as:
+//     {"int64Value": 1}
+func (p *Point) MarshalJSON() ([]byte, error) {
+       if p == nil {
+               return []byte("null"), nil
+       }
+
+       switch d := p.Value.(type) {
+       case PointInt64Value:
+               return json.Marshal(&struct {
+                       Timestamp *Timestamp `json:"timestamp,omitempty"`
+                       Value     int64      `json:"int64Value,omitempty"`
+               }{
+                       Timestamp: p.Timestamp,
+                       Value:     d.Int64Value,
+               })
+       case PointDoubleValue:
+               return json.Marshal(&struct {
+                       Timestamp *Timestamp `json:"timestamp,omitempty"`
+                       Value     float64    `json:"doubleValue,omitempty"`
+               }{
+                       Timestamp: p.Timestamp,
+                       Value:     d.DoubleValue,
+               })
+       case PointDistributionValue:
+               return json.Marshal(&struct {
+                       Timestamp *Timestamp         `json:"timestamp,omitempty"`
+                       Value     *DistributionValue `json:"distributionValue,omitempty"`
+               }{
+                       Timestamp: p.Timestamp,
+                       Value:     d.DistributionValue,
+               })
+       default:
+               return nil, fmt.Errorf("unknown point type %T", p.Value)
+       }
+}
+
+type PointDoubleValue struct {
+       DoubleValue float64 `json:"doubleValue,omitempty"`
+}
+
+type PointDistributionValue struct {
+       DistributionValue *DistributionValue `json:"distributionValue,omitempty"`
+}
+
+type PointSummaryValue struct {
+       SummaryValue *SummaryValue `json:"summaryValue,omitempty"`
+}
+
+type PointValue interface {
+       labelPointValue()
+}
+
+func (PointInt64Value) labelPointValue()        {}
+func (PointDoubleValue) labelPointValue()       {}
+func (PointDistributionValue) labelPointValue() {}
+func (PointSummaryValue) labelPointValue()      {}
+
+type DistributionValue struct {
+       Count                 int64         `json:"count,omitempty"`
+       Sum                   float64       `json:"sum,omitempty"`
+       SumOfSquaredDeviation float64       `json:"sum_of_squared_deviation,omitempty"`
+       BucketOptions         BucketOptions `json:"bucket_options,omitempty"`
+       Buckets               []*Bucket     `json:"buckets,omitempty"`
+}
+
+type BucketOptionsExplicit struct {
+       Bounds []float64 `json:"bounds,omitempty"`
+}
+
+type BucketOptions interface {
+       labelBucketOptions()
+}
+
+func (*BucketOptionsExplicit) labelBucketOptions() {}
+
+var _ BucketOptions = (*BucketOptionsExplicit)(nil)
+var _ json.Marshaler = (*BucketOptionsExplicit)(nil)
+
+// Declared for the purpose of custom JSON marshaling without cycles.
+type bucketOptionsExplicitAlias BucketOptionsExplicit
+
+// MarshalJSON creates JSON formatted the same way as jsonpb so that the
+// OpenCensus service can correctly determine the underlying value type.
+// This custom MarshalJSON exists because,
+// by default BucketOptionsExplicit is JSON marshalled as:
+//     {"bounds":[1,2,3]}
+// but it should be marshalled as:
+//     {"explicit":{"bounds":[1,2,3]}}
+func (be *BucketOptionsExplicit) MarshalJSON() ([]byte, error) {
+       return json.Marshal(&struct {
+               Explicit *bucketOptionsExplicitAlias `json:"explicit,omitempty"`
+       }{
+               Explicit: (*bucketOptionsExplicitAlias)(be),
+       })
+}
+
+type Bucket struct {
+       Count    int64     `json:"count,omitempty"`
+       Exemplar *Exemplar `json:"exemplar,omitempty"`
+}
+
+type Exemplar struct {
+       Value       float64           `json:"value,omitempty"`
+       Timestamp   *Timestamp        `json:"timestamp,omitempty"`
+       Attachments map[string]string `json:"attachments,omitempty"`
+}
+
+type SummaryValue struct {
+       Count    *Int64Value  `json:"count,omitempty"`
+       Sum      *DoubleValue `json:"sum,omitempty"`
+       Snapshot *Snapshot    `json:"snapshot,omitempty"`
+}
+
+type Snapshot struct {
+       Count            *Int64Value                  `json:"count,omitempty"`
+       Sum              *DoubleValue                 `json:"sum,omitempty"`
+       PercentileValues []*SnapshotValueAtPercentile `json:"percentile_values,omitempty"`
+}
+
+type SnapshotValueAtPercentile struct {
+       Percentile float64 `json:"percentile,omitempty"`
+       Value      float64 `json:"value,omitempty"`
+}