From c73504e68d5de7b2bda8a4ff88889db17aa6b5af Mon Sep 17 00:00:00 2001 From: edwinwu Date: Thu, 19 Aug 2021 20:02:39 -0700 Subject: [PATCH] analytics: 3p NC: Defines interface EventLogger for Analytics logger. - this is the init cl. doc: go/nc-analytics-api PiperOrigin-RevId: 391901111 --- cpp/core/BUILD | 11 +++++++++++ cpp/core/event_logger.h | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 cpp/core/event_logger.h diff --git a/cpp/core/BUILD b/cpp/core/BUILD index 9fa892fb..12456f0b 100644 --- a/cpp/core/BUILD +++ b/cpp/core/BUILD @@ -28,6 +28,7 @@ cc_library( ], deps = [ ":core_types", + ":event_logger", "//absl/strings", "//absl/time", "//absl/types:span", @@ -66,6 +67,16 @@ cc_library( ], ) +cc_library( + name = "event_logger", + hdrs = [ + "event_logger.h", + ], + deps = [ + "//logs/proto/location/nearby:nearby_client_log_cc_proto", + ], +) + cc_test( name = "core_test", size = "small", diff --git a/cpp/core/event_logger.h b/cpp/core/event_logger.h new file mode 100644 index 00000000..763eb1e3 --- /dev/null +++ b/cpp/core/event_logger.h @@ -0,0 +1,41 @@ +// Copyright 2020 Google LLC +// +// 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 +// +// https://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. + +#ifndef CORE_EVENT_LOGGER_H_ +#define CORE_EVENT_LOGGER_H_ + +#include "logs/proto/location/nearby/nearby_client_log.proto.h" + +namespace location { +namespace nearby { +namespace connections { +namespace analytics { + +// Allows callers to log |ConnectionsLog| collected at Nearby Connections +// library. Callers need to implement the API if they want to collect this log. +class EventLogger { + public: + virtual ~EventLogger() = default; + + // Logs |ConnectionsLog| details. Might block to do I/O, e.g. upload + // synchronously to some metrics server. + virtual void Log(const logs::ConnectionsLog& connections_log) = 0; +}; + +} // namespace analytics +} // namespace connections +} // namespace nearby +} // namespace location + +#endif // CORE_EVENT_LOGGER_H_