| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library fuchsia.legacymetrics; |
| |
| using zx; |
| |
| /// A single metric event to be recorded and sent to the UMA backend. |
| type Event = strict union { |
| 1: user_action_event UserActionEvent; |
| 2: histogram Histogram; |
| 3: impl_defined_event ImplementationDefinedEvent; |
| }; |
| |
| /// Event that occurs in response to a user action. See |
| /// https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/actions/README.md |
| type UserActionEvent = table { |
| 1: name string:MAX; |
| |
| /// Required timestamp of the event occurrence. See TimeTicks in |
| /// https://cs.chromium.org/chromium/src/base/time/time.h |
| 2: time zx.time; |
| }; |
| |
| type Histogram = table { |
| /// Required histogram identifier. See these guidelines for more info: |
| /// https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md#naming-your-histogram |
| 1: name string:MAX; |
| |
| 2: buckets vector<HistogramBucket>:MAX; |
| |
| // The sum of all the sample values. |
| // Together with the total count of the sample values, this allows us to |
| // compute the average value. The count of all sample values is just the sum |
| // of the counts of all the buckets. |
| 3: sum int64; |
| }; |
| |
| type HistogramBucket = struct { |
| // Each bucket's range is bounded by min <= x < max. |
| min int64; |
| max int64; |
| |
| // The number of entries in this bucket. |
| count int64; |
| }; |
| |
| /// A custom event defined by the MetricsRecorder service. Refer to your |
| /// MetricsRecorder implementation for more details on the payload structure. |
| type ImplementationDefinedEvent = table { |
| /// Custom binary payload whose structure is defined by the MetricsRecorder |
| /// implementation. For example, it can represent a custom event protocol |
| /// buffer serialized to its wire format. |
| 1: data vector<uint8>:MAX; |
| |
| /// Event identifier required if it's not already included in binary `data`. |
| /// This field takes precedence over any equivalent name included in binary |
| /// `data`, if both are provided. |
| 2: name string:MAX; |
| }; |