# Copyright (c) 2021 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../../webrtc.gni")

rtc_library("data_tracker") {
  deps = [
    "../../../api:array_view",
    "../../../rtc_base",
    "../../../rtc_base:checks",
    "../../../rtc_base:rtc_base_approved",
  ]
  sources = [
    "data_tracker.cc",
    "data_tracker.h",
  ]
}

rtc_source_set("reassembly_streams") {
  deps = [ "../packet:chunk" ]
  sources = [ "reassembly_streams.h" ]
}

rtc_library("traditional_reassembly_streams") {
  deps = [
    ":reassembly_streams",
    "../../../api:array_view",
    "../../../rtc_base",
    "../../../rtc_base:checks",
    "../../../rtc_base:rtc_base_approved",
  ]
  sources = [
    "traditional_reassembly_streams.cc",
    "traditional_reassembly_streams.h",
  ]
}

rtc_library("reassembly_queue") {
  deps = [
    ":traditional_reassembly_streams",
    "../../../api:array_view",
    "../../../rtc_base",
    "../../../rtc_base:checks",
    "../../../rtc_base:rtc_base_approved",
  ]
  sources = [
    "reassembly_queue.cc",
    "reassembly_queue.h",
  ]
}

if (rtc_include_tests) {
  rtc_library("dcsctp_rx_unittests") {
    testonly = true

    deps = [
      ":data_tracker",
      ":reassembly_queue",
      ":traditional_reassembly_streams",
      "../../../api:array_view",
      "../../../rtc_base:checks",
      "../../../rtc_base:gunit_helpers",
      "../../../rtc_base:rtc_base_approved",
      "../../../test:test_support",
      "../testing:data_generator",
    ]
    sources = [
      "data_tracker_test.cc",
      "reassembly_queue_test.cc",
      "traditional_reassembly_streams_test.cc",
    ]
  }
}
