[TeX] Introduced Telemetry Express Native Logging Library

- added support C++ TeX Counter logging API

Bug: 258868665
Test: build
Change-Id: I86ae4335c89196708d4174dd5613ddc89622b17c
This commit is contained in:
Vova Sharaienko 2023-01-13 20:51:30 +00:00
parent d5d01db888
commit 3aaf79bea4
4 changed files with 150 additions and 0 deletions

View file

@ -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

View file

@ -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",
],
}

View file

@ -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

View file

@ -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