# 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/flatbuffers/flatbuffer.gni")

visibility = [ "//peridot/bin/ledger/*" ]

source_set("impl") {
  sources = [
    "commit_batch.cc",
    "commit_batch.h",
    "device_mesh.h",
    "flatbuffer_message_factory.cc",
    "flatbuffer_message_factory.h",
    "ledger_communicator_impl.cc",
    "ledger_communicator_impl.h",
    "message_holder.h",
    "page_communicator_impl.cc",
    "page_communicator_impl.h",
    "user_communicator_factory_impl.cc",
    "user_communicator_factory_impl.h",
    "user_communicator_impl.cc",
    "user_communicator_impl.h",
  ]

  public_deps = [
    "//garnet/public/lib/fxl",
    "//peridot/bin/ledger/environment",
    "//peridot/bin/ledger/p2p_provider/impl",
    "//peridot/bin/ledger/p2p_sync/public",
    "//peridot/bin/ledger/storage/public",
    "//peridot/lib/convert",
    "//peridot/public/fidl/fuchsia.modular.auth",
  ]

  deps = [
    ":message",
    "//garnet/public/lib/callback",
    "//peridot/lib/ledger_client:constants",
  ]
}

flatbuffer("message") {
  sources = [
    "message.fbs",
  ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "page_communicator_impl_unittest.cc",
    "user_communicator_impl_unittest.cc",
  ]

  deps = [
    ":impl",
    "//garnet/public/lib/fidl/cpp",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
    "//peridot/bin/ledger/p2p_provider/impl",
    "//peridot/bin/ledger/storage/fake:lib",
    "//peridot/bin/ledger/storage/testing",
    "//peridot/bin/ledger/testing:lib",
    "//peridot/bin/ledger/testing/netconnector",

    # gtest matchers are in gmock.
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]

  configs += [ "//peridot/bin/ledger:ledger_config" ]
}
