diff options
author | Vova Sharaienko <sharaienko@google.com> | 2023-01-13 20:51:30 +0000 |
---|---|---|
committer | Vova Sharaienko <sharaienko@google.com> | 2023-01-18 04:36:20 +0000 |
commit | 3aaf79bea41de14a1ef6a726c4d094d66d6c74ce (patch) | |
tree | 7d04261067f753ee1b95e60cb899cb3326354522 | |
parent | d5d01db888f9726713cd8565a94bade9bdf665b4 (diff) | |
download | core-3aaf79bea41de14a1ef6a726c4d094d66d6c74ce.tar.gz |
[TeX] Introduced Telemetry Express Native Logging Library
- added support C++ TeX Counter logging API
Bug: 258868665
Test: build
Change-Id: I86ae4335c89196708d4174dd5613ddc89622b17c
-rw-r--r-- | libstats/expresslog/.clang-format | 17 | ||||
-rw-r--r-- | libstats/expresslog/Android.bp | 71 | ||||
-rw-r--r-- | libstats/expresslog/Counter.cpp | 32 | ||||
-rw-r--r-- | libstats/expresslog/include/Counter.h | 30 |
4 files changed, 150 insertions, 0 deletions
diff --git a/libstats/expresslog/.clang-format b/libstats/expresslog/.clang-format new file mode 100644 index 000000000..cead3a079 --- /dev/null +++ b/libstats/expresslog/.clang-format @@ -0,0 +1,17 @@ +BasedOnStyle: Google +AllowShortIfStatementsOnASingleLine: true +AllowShortFunctionsOnASingleLine: false +AllowShortLoopsOnASingleLine: true +BinPackArguments: true +BinPackParameters: true +ColumnLimit: 100 +CommentPragmas: NOLINT:.* +ContinuationIndentWidth: 8 +DerivePointerAlignment: false +IndentWidth: 4 +PointerAlignment: Left +TabWidth: 4 +AccessModifierOffset: -4 +IncludeCategories: + - Regex: '^"Log\.h"' + Priority: -1 diff --git a/libstats/expresslog/Android.bp b/libstats/expresslog/Android.bp new file mode 100644 index 000000000..9cdc2c30a --- /dev/null +++ b/libstats/expresslog/Android.bp @@ -0,0 +1,71 @@ + +// +// Copyright (C) 2023 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +cc_library { + name: "libexpresslog", + srcs: [ + "Counter.cpp", + ], + cflags: [ + "-DNAMESPACE_FOR_HASH_FUNCTIONS=farmhash", + "-Wall", + "-Werror", + ], + header_libs: [ + "libtextclassifier_hash_headers", + ], + static_libs: [ + "libstatslog_express", + "libtextclassifier_hash_static", + ], + shared_libs: [ + "libbase", + "libstatssocket", + ], + export_include_dirs: ["include"], +} + +genrule { + name: "statslog_express.h", + tools: ["stats-log-api-gen"], + cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_express.h --module expresslog --namespace android,expresslog", + out: [ + "statslog_express.h", + ], +} + +genrule { + name: "statslog_express.cpp", + tools: ["stats-log-api-gen"], + cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_express.cpp --module expresslog --namespace android,expresslog --importHeader statslog_express.h", + out: [ + "statslog_express.cpp", + ], +} + +cc_library_static { + name: "libstatslog_express", + generated_sources: ["statslog_express.cpp"], + generated_headers: ["statslog_express.h"], + export_generated_headers: ["statslog_express.h"], + shared_libs: [ + "libstatssocket", + ], +} diff --git a/libstats/expresslog/Counter.cpp b/libstats/expresslog/Counter.cpp new file mode 100644 index 000000000..bee130344 --- /dev/null +++ b/libstats/expresslog/Counter.cpp @@ -0,0 +1,32 @@ +// +// Copyright (C) 2023 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#include "include/Counter.h" + +#include <statslog_express.h> +#include <string.h> +#include <utils/hash/farmhash.h> + +namespace android { +namespace expresslog { + +void Counter::logIncrement(const char* metricName, int64_t amount) { + const int64_t metricIdHash = farmhash::Fingerprint64(metricName, strlen(metricName)); + stats_write(EXPRESS_EVENT_REPORTED, metricIdHash, amount); +} + +} // namespace expresslog +} // namespace android diff --git a/libstats/expresslog/include/Counter.h b/libstats/expresslog/include/Counter.h new file mode 100644 index 000000000..57328f51b --- /dev/null +++ b/libstats/expresslog/include/Counter.h @@ -0,0 +1,30 @@ +// +// Copyright (C) 2023 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#pragma once +#include <stdint.h> + +namespace android { +namespace expresslog { + +/** Counter encapsulates StatsD write API calls */ +class Counter final { +public: + static void logIncrement(const char* metricId, int64_t amount = 1); +}; + +} // namespace expresslog +} // namespace android |