# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//third_party/protobuf/proto_library.gni")
import("//third_party/cobalt_config/metrics_registry.gni")

metrics_registry("internal_metrics_config") {
  customer_id = 2147483647
  project_name = "metrics"
  namespace = "cobalt.logger"

  generate_binarypb = false
  generate_cc = true
}

proto_library("cobalt_local_aggregation_proto") {
  proto_in_dir = "//third_party/cobalt"
  sources = [
    "local_aggregation.proto",
  ]
  import_dirs = [ "//third_party/protobuf/src" ]
  generate_python = false
  cc_generator_options = "lite"
  deps = [
    "//third_party/cobalt/config:cobalt_registry_proto",
  ]

  extra_configs = [
    "//third_party/cobalt:cobalt_config",
    "//third_party/cobalt/config:proto_config",
  ]
}

source_set("status") {
  sources = [
    "status.h",
  ]
}

source_set("event_record") {
  sources = [
    "event_record.h",
  ]

  public_configs = [
    "//third_party/cobalt:cobalt_config",
    "//third_party/cobalt/config:proto_config",
  ]

  public_deps = [
    "//third_party/cobalt:cobalt_proto",
    "//third_party/cobalt/config:cobalt_registry_proto",
  ]
}

source_set("project_context") {
  sources = [
    "project_context.cc",
    "project_context.h",
  ]

  public_configs = [
    "//third_party/cobalt:cobalt_config",
    "//third_party/cobalt/config:proto_config",
  ]

  public_deps = [
    ":status",
    "//garnet/public/lib/fxl",
    "//third_party/cobalt/config:cobalt_registry_proto",
    "//third_party/cobalt/config:project_configs",
  ]
}

source_set("encoder") {
  sources = [
    "encoder.cc",
    "encoder.h",
  ]

  public_configs = [ "//third_party/cobalt:cobalt_config" ]

  public_deps = [
    ":project_context",
    ":status",
    "//garnet/public/lib/fxl",
    "//third_party/abseil-cpp",
    "//third_party/cobalt/config:cobalt_registry_proto",
    "//third_party/cobalt/encoder",
    "//third_party/cobalt/util/crypto_util",
  ]
}

source_set("observation_writer") {
  sources = [
    "observation_writer.cc",
    "observation_writer.h",
  ]

  public_configs = [ "//third_party/cobalt:cobalt_config" ]

  public_deps = [
    ":status",
    "//garnet/public/lib/fxl",
    "//third_party/cobalt:cobalt_proto",
    "//third_party/cobalt/encoder",
    "//third_party/cobalt/util:encrypted_message_util",
  ]
}

source_set("event_aggregator") {
  sources = [
    "event_aggregator.cc",
    "event_aggregator.h",
  ]

  public_configs = [
    "//third_party/cobalt:cobalt_config",
    "//third_party/cobalt/config:proto_config",
  ]

  public_deps = [
    ":cobalt_local_aggregation_proto",
    ":encoder",
    ":event_record",
    ":observation_writer",
    ":status",
    "//garnet/public/lib/fxl",
    "//third_party/cobalt/algorithms/rappor:rappor_encoder",
    "//third_party/cobalt:cobalt_proto",
    "//third_party/cobalt/config:cobalt_registry_proto",
    "//third_party/cobalt/util:consistent_proto_store",
    "//third_party/cobalt/util:proto_util",
  ]
}

source_set("logger_interface") {
  sources = [
    "logger_interface.h",
  ]

  public_configs = [ "//third_party/cobalt:cobalt_config" ]

  public_deps = [
    ":encoder",
    ":status",
  ]
}

source_set("internal_metrics") {
  sources = [
    "internal_metrics.cc",
    "internal_metrics.h",
  ]

  public_configs = [ "//third_party/cobalt:cobalt_config" ]

  public_deps = [
    ":internal_metrics_config_cc",
    ":logger_interface",
    "//garnet/public/lib/fxl",
  ]
}

source_set("logger") {
  sources = [
    "logger.cc",
    "logger.h",
  ]

  public_configs = [ "//third_party/cobalt:cobalt_config" ]

  public_deps = [
    ":encoder",
    ":event_aggregator",
    ":event_record",
    ":internal_metrics",
    ":logger_interface",
    ":observation_writer",
    ":project_context",
    ":status",
    "//third_party/cobalt/config:id",
  ]
}
