blob: ab48ec87e3bdd75d96152193d7a32da3a8e4bb95 [file] [log] [blame]
// Copyright 2018 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.
#include <cobalt-client/cpp/metric-options.h>
#include <cobalt-client/cpp/types-internal.h>
#include <fbl/string_printf.h>
namespace cobalt_client {
namespace internal {
LocalMetricInfo LocalMetricInfo::From(const MetricOptions& options) {
LocalMetricInfo metric_info;
if (!options.name.empty()) {
metric_info.name = options.name;
return metric_info;
}
if (options.get_metric_name != nullptr) {
metric_info.name = options.get_metric_name(options.metric_id);
} else {
metric_info.name = fbl::StringPrintf("%u", options.metric_id);
}
if (!options.component.empty()) {
metric_info.name =
fbl::StringPrintf("%s.%s", metric_info.name.c_str(), options.component.c_str());
}
if (options.get_event_name != nullptr) {
metric_info.name = fbl::StringPrintf("%s.%s", metric_info.name.c_str(),
options.get_event_name(options.event_code));
} else {
metric_info.name = fbl::StringPrintf("%s.%u", metric_info.name.c_str(), options.event_code);
}
return metric_info;
}
bool LocalMetricInfo::operator==(const LocalMetricInfo& rhs) const {
return rhs.name == name;
}
bool LocalMetricInfo::operator!=(const LocalMetricInfo& rhs) const {
return !(*this == rhs);
}
RemoteMetricInfo RemoteMetricInfo::From(const MetricOptions& options) {
RemoteMetricInfo metric_info;
metric_info.metric_id = options.metric_id;
metric_info.component = options.component;
metric_info.event_code = options.event_code;
return metric_info;
}
bool RemoteMetricInfo::operator==(const RemoteMetricInfo& rhs) const {
return rhs.metric_id == metric_id && rhs.event_code == event_code && rhs.component == component;
}
bool RemoteMetricInfo::operator!=(const RemoteMetricInfo& rhs) const {
return !(*this == rhs);
}
} // namespace internal
} // namespace cobalt_client