# Copyright 2019 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.

source_set("host_reactor") {
  sources = [
    "host_reactor.cc",
    "host_reactor.h",
  ]
  deps = [
    "//src/connectivity/overnet/lib/environment:timer",
    "//src/connectivity/overnet/lib/environment:trace",
  ]
}

source_set("channel") {
  sources = [
    "decoder.cc",
    "decoder.h",
    "encoder.cc",
    "encoder.h",
    "fidl_channel.cc",
    "fidl_channel.h",
    "zx_channel.cc",
    "zx_channel.h",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.overnet.protocol",
    "//src/connectivity/overnet/lib/endpoint:router_endpoint",
    "//src/connectivity/overnet/lib/protocol:coding",
    "//src/connectivity/overnet/lib/vocabulary:optional",
    "//zircon/public/lib/fbl",
  ]
}

source_set("zx_socket") {
  sources = [
    "zx_socket.cc",
    "zx_socket.h",
  ]
  public_deps = [
    ":channel",
  ]
}

source_set("runtime") {
  sources = [
    "header.h",
    "implementation.h",
    "to_embedded.h",
  ]
  public_deps = [
    ":channel",
    ":zx_socket",
  ]
}

source_set("embedded") {
  sources = [
    "overnet_embedded.cc",
    "overnet_embedded.h",
  ]
  public_deps = [
    ":host_reactor",
    ":runtime",
    "//sdk/fidl/fuchsia.overnet:fuchsia.overnet_overnet_embedded",
    "//src/connectivity/overnet/lib/environment:trace_cout",
  ]
}

source_set("omdp_nub") {
  sources = [
    "omdp_nub.cc",
    "omdp_nub.h",
  ]
  public_deps = [
    ":embedded",
    ":udp_nub",
    "//src/connectivity/overnet/lib/omdp",
    "//src/connectivity/overnet/lib/vocabulary:ip_addr",
    "//src/connectivity/overnet/lib/vocabulary:socket",
    "//zircon/public/lib/fbl",
  ]
}

source_set("udp_nub") {
  sources = [
    "udp_nub.cc",
    "udp_nub.h",
  ]
  public_deps = [
    ":embedded",
    "//src/connectivity/overnet/lib/links:packet_nub",
    "//src/connectivity/overnet/lib/vocabulary:ip_addr",
    "//src/connectivity/overnet/lib/vocabulary:socket",
  ]
}
