/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/** * Gets a specific metric for a given label. * * If a set of acceptable labels were specified in the `metrics.yaml` file, * and the given label is not in the set, it will be recorded under the * special `OTHER_LABEL` label. * * If a set of acceptable labels was not specified in the `metrics.yaml` file, * only the first 16 unique labels will be used. * After that, any additional labels will be recorded under the special * `OTHER_LABEL` label. * * @param aLabel - a snake_case string under 30 characters in length, * otherwise the metric will be recorded under the special * `OTHER_LABEL` label and an error will be recorded.
*/
T Get(const nsACString& aLabel) const;
/** * Gets a specific metric for a given label, using the label's enum variant. * * @param aLabel - a variant of this label's label enum.
*/
T EnumGet(E aLabel) const;
BooleanMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_boolean_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored scalar so we can mirror its operations. auto mirrorId = ScalarIdForMetric(mId); if (mirrorId) {
UpdateLabeledMirror(mirrorId.extract(), submetricId, aLabel);
} return BooleanMetric(submetricId);
}
BooleanMetric EnumGet(E aLabel) const { auto submetricId =
fog_labeled_boolean_enum_get(mId, static_cast<uint16_t>(aLabel)); auto mirrorId = ScalarIdForMetric(mId); if (mirrorId) { // Telemetry's keyed scalars operate on (16-bit) strings, // so we're going to need the string for this enum.
nsCString label;
fog_labeled_enum_to_str(mId, static_cast<uint16_t>(aLabel), &label);
UpdateLabeledMirror(mirrorId.extract(), submetricId, label);
} return BooleanMetric(submetricId);
}
CounterMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_counter_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored scalar so we can mirror its operations. auto mirrorId = ScalarIdForMetric(mId); if (mirrorId) {
UpdateLabeledMirror(mirrorId.extract(), submetricId, aLabel);
} elseif (auto mirrorHgramId = HistogramIdForMetric(mId)) {
UpdateLabeledDistributionMirror(mirrorHgramId.extract(), submetricId,
aLabel);
} return CounterMetric(submetricId);
}
CounterMetric EnumGet(E aLabel) const { auto submetricId =
fog_labeled_counter_enum_get(mId, static_cast<uint16_t>(aLabel)); auto mirrorId = ScalarIdForMetric(mId); if (mirrorId) { // Telemetry's keyed scalars operate on (16-bit) strings, // so we're going to need the string for this enum.
nsCString label;
fog_labeled_enum_to_str(mId, static_cast<uint16_t>(aLabel), &label);
UpdateLabeledMirror(mirrorId.extract(), submetricId, label);
} elseif (auto mirrorHgramId = HistogramIdForMetric(mId)) {
nsCString label;
fog_labeled_enum_to_str(mId, static_cast<uint16_t>(aLabel), &label);
UpdateLabeledDistributionMirror(mirrorHgramId.extract(), submetricId,
label);
} return CounterMetric(submetricId);
}
CustomDistributionMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_custom_distribution_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored hgram so we can mirror its operations. auto mirrorId = HistogramIdForMetric(mId); if (mirrorId) {
UpdateLabeledDistributionMirror(mirrorId.extract(), submetricId, aLabel);
} return CustomDistributionMetric(submetricId);
}
CustomDistributionMetric EnumGet(E aLabel) const { auto submetricId = fog_labeled_custom_distribution_enum_get(
mId, static_cast<uint16_t>(aLabel)); auto mirrorId = HistogramIdForMetric(mId); if (mirrorId) { // Telemetry's keyed histograms operate on strings, // so we're going to need to store the string for this enum.
nsCString label;
fog_labeled_enum_to_str(mId, static_cast<uint16_t>(aLabel), &label);
UpdateLabeledDistributionMirror(mirrorId.extract(), submetricId, label);
} return CustomDistributionMetric(submetricId);
}
MemoryDistributionMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_memory_distribution_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored hgram so we can mirror its operations. auto mirrorId = HistogramIdForMetric(mId); if (mirrorId) {
UpdateLabeledDistributionMirror(mirrorId.extract(), submetricId, aLabel);
} return MemoryDistributionMetric(submetricId);
}
MemoryDistributionMetric EnumGet(E aLabel) const { auto submetricId = fog_labeled_memory_distribution_enum_get(
mId, static_cast<uint16_t>(aLabel)); auto mirrorId = HistogramIdForMetric(mId); if (mirrorId) { // Telemetry's keyed histograms operate on strings, // so we're going to need to store the string for this enum.
nsCString label;
fog_labeled_enum_to_str(mId, static_cast<uint16_t>(aLabel), &label);
UpdateLabeledDistributionMirror(mirrorId.extract(), submetricId, label);
} return MemoryDistributionMetric(submetricId);
}
QuantityMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_quantity_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored scalar so we can mirror its operations. auto mirrorId = ScalarIdForMetric(mId); if (mirrorId) {
UpdateLabeledMirror(mirrorId.extract(), submetricId, aLabel);
} return QuantityMetric(submetricId);
}
QuantityMetric EnumGet(E aLabel) const { auto submetricId =
fog_labeled_quantity_enum_get(mId, static_cast<uint16_t>(aLabel)); auto mirrorId = ScalarIdForMetric(mId); if (mirrorId) { // Telemetry's keyed scalars operate on (16-bit) strings, // so we're going to need the string for this enum.
nsCString label;
fog_labeled_enum_to_str(mId, static_cast<uint16_t>(aLabel), &label);
UpdateLabeledMirror(mirrorId.extract(), submetricId, label);
} return QuantityMetric(submetricId);
}
StringMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_string_get(mId, &aLabel); // Why no GIFFT map here? // Labeled Strings can't be mirrored. Telemetry has no compatible probe. return StringMetric(submetricId);
}
StringMetric EnumGet(E aLabel) const { auto submetricId =
fog_labeled_string_enum_get(mId, static_cast<uint16_t>(aLabel)); // Why no GIFFT map here? // Labeled Strings can't be mirrored. Telemetry has no compatible probe. return StringMetric(submetricId);
}
TimingDistributionMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_timing_distribution_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored hgram so we can mirror its operations. auto mirrorId = HistogramIdForMetric(mId); if (mirrorId) {
UpdateLabeledDistributionMirror(mirrorId.extract(), submetricId, aLabel);
} return TimingDistributionMetric(submetricId);
}
TimingDistributionMetric EnumGet(E aLabel) const { auto submetricId = fog_labeled_timing_distribution_enum_get(
mId, static_cast<uint16_t>(aLabel)); auto mirrorId = HistogramIdForMetric(mId); if (mirrorId) { // Telemetry's keyed histograms operate on strings, // so we're going to need to store the string for this enum.
nsCString label;
fog_labeled_enum_to_str(mId, static_cast<uint16_t>(aLabel), &label);
UpdateLabeledDistributionMirror(mirrorId.extract(), submetricId, label);
} return TimingDistributionMetric(submetricId);
}
BooleanMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_boolean_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored scalar so we can mirror its operations. auto mirrorId = ScalarIdForMetric(mId); if (mirrorId) {
UpdateLabeledMirror(mirrorId.extract(), submetricId, aLabel);
} return BooleanMetric(submetricId);
}
CounterMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_counter_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored scalar so we can mirror its operations. auto mirrorId = ScalarIdForMetric(mId); if (mirrorId) {
UpdateLabeledMirror(mirrorId.extract(), submetricId, aLabel);
} elseif (auto mirrorHgramId = HistogramIdForMetric(mId)) {
UpdateLabeledDistributionMirror(mirrorHgramId.extract(), submetricId,
aLabel);
} return CounterMetric(submetricId);
}
CustomDistributionMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_custom_distribution_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored hgram so we can mirror its operations. auto mirrorId = HistogramIdForMetric(mId); if (mirrorId) {
UpdateLabeledDistributionMirror(mirrorId.extract(), submetricId, aLabel);
} return CustomDistributionMetric(submetricId);
}
TimingDistributionMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_memory_distribution_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored hgram so we can mirror its operations. auto mirrorId = HistogramIdForMetric(mId); if (mirrorId) {
UpdateLabeledDistributionMirror(mirrorId.extract(), submetricId, aLabel);
} return TimingDistributionMetric(submetricId);
}
QuantityMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_quantity_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored scalar so we can mirror its operations. auto mirrorId = ScalarIdForMetric(mId); if (mirrorId) {
UpdateLabeledMirror(mirrorId.extract(), submetricId, aLabel);
} return QuantityMetric(submetricId);
}
MemoryDistributionMetric Get(const nsACString& aLabel) const { auto submetricId = fog_labeled_timing_distribution_get(mId, &aLabel); // If this labeled metric is mirrored, we need to map the submetric id back // to the label string and mirrored hgram so we can mirror its operations. auto mirrorId = HistogramIdForMetric(mId); if (mirrorId) {
UpdateLabeledDistributionMirror(mirrorId.extract(), submetricId, aLabel);
} return MemoryDistributionMetric(submetricId);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.