diff options
author | 2020-12-07 15:07:00 -0800 | |
---|---|---|
committer | 2020-12-21 18:09:31 +0000 | |
commit | 51a9283984b05511bd98f9bcbd1f2f18900239cc (patch) | |
tree | 09b25eb574b2c93f4e940bfab423b58acdf340bd /libartbase/base/variant_map.h | |
parent | 20cadbf2a204a029b595cd44f9298f6570b5c812 (diff) |
[metrics] Add file output support
Adds a new command line option, -Xwrite-metrics-to-file=_, which
specifies a file for writing metrics to. This can be used in conjunction
with -Xwrite-metrics-to-log, which will cause the output to go to both
logcat and the file.
Writing metrics to a file can be helpful for testing or benchmarking
environments.
Access to the file is protected using advisory locking, so it is safe to
have multiple processes write metrics to the same file.
Test: test/run-test --host test/2234-write-metrics-to-file
Bug: 175025360, 170149255
Change-Id: I83a4f959cbb96847dc71188035c050a73b915064
Diffstat (limited to 'libartbase/base/variant_map.h')
-rw-r--r-- | libartbase/base/variant_map.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libartbase/base/variant_map.h b/libartbase/base/variant_map.h index 581bc234cc..7349bbc046 100644 --- a/libartbase/base/variant_map.h +++ b/libartbase/base/variant_map.h @@ -229,6 +229,14 @@ struct VariantMap { return GetValuePtr(key); } + // Look up the value from the key and return the value wrapped in a std::optional. If it was not + // set in the map, return an empty std::optional. + template <typename TValue> + std::optional<TValue> GetOptional(const TKey<TValue>& key) const { + auto* ptr = Get(key); + return (ptr == nullptr) ? std::optional<TValue>{} : std::make_optional(*ptr); + } + // Lookup the value from the key. If it was not set in the map, return the default value. // The default value is either the key's default, or TValue{} if the key doesn't have a default. template <typename TValue> |