# 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/cobalt_config/metrics_registry.gni")

metrics_registry("internal_metrics_config") {
  use_target_name = true

  customer_id = 2147483647
  project_name = "metrics"
  namespace = "cobalt.logger"

  generate_binarypb = false
  generate_cc = true
}

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

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

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

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",
    ":internal_metrics",
    ":logger_interface",
    ":observation_writer",
    ":project_context",
    ":status",
    "//third_party/cobalt/config:id",
  ]
}
