blob: db6776bc50ce7ba31b4e7c1a3a512a64c5906ae8 [file] [log] [blame]
// Copyright 2019 The Chromium 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 "base/profiler/sample_metadata.h"
#include "base/metrics/metrics_hashes.h"
#include "base/no_destructor.h"
namespace base {
ScopedSampleMetadata::ScopedSampleMetadata(base::StringPiece name,
int64_t value)
: name_hash_(HashMetricName(name)) {
GetSampleMetadataRecorder()->Set(name_hash_, value);
}
ScopedSampleMetadata::~ScopedSampleMetadata() {
GetSampleMetadataRecorder()->Remove(name_hash_);
}
void SetSampleMetadata(base::StringPiece name, int64_t value) {
GetSampleMetadataRecorder()->Set(base::HashMetricName(name), value);
}
void RemoveSampleMetadata(base::StringPiece name) {
GetSampleMetadataRecorder()->Remove(base::HashMetricName(name));
}
base::MetadataRecorder* GetSampleMetadataRecorder() {
static base::NoDestructor<base::MetadataRecorder> instance;
return instance.get();
}
} // namespace base