1e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org/*
2e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org *
4e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org *  Use of this source code is governed by a BSD-style license
5e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org *  that can be found in the LICENSE file in the root of the source
6e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org *  tree. An additional intellectual property rights grant can be found
7e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org *  in the file PATENTS.  All contributing project authors may
8e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org */
10e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org
115c389d3e09646c0e2ed76d5ccb37a3419a09eb6aPeter Boström#include "webrtc/call/transport_adapter.h"
12e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org
134fbae2b79134572135d9d5fe35a7d1ccdeea3a4dsolenberg#include "webrtc/base/checks.h"
144fbae2b79134572135d9d5fe35a7d1ccdeea3a4dsolenberg
15e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.orgnamespace webrtc {
16e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.orgnamespace internal {
17e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org
182d566686a23fe93ada58f1c38a0d4b9a0d68556epbosTransportAdapter::TransportAdapter(Transport* transport)
194fbae2b79134572135d9d5fe35a7d1ccdeea3a4dsolenberg    : transport_(transport), enabled_(0) {
2091d6edef35e7275879c30ce16ecb8b6dc73c6e4ahenrikg  RTC_DCHECK(nullptr != transport);
214fbae2b79134572135d9d5fe35a7d1ccdeea3a4dsolenberg}
22e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org
231d8a506405734d0cef9653704b036ca4f1388960stefanbool TransportAdapter::SendRtp(const uint8_t* packet,
241d8a506405734d0cef9653704b036ca4f1388960stefan                               size_t length,
251d8a506405734d0cef9653704b036ca4f1388960stefan                               const PacketOptions& options) {
26d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org  if (enabled_.Value() == 0)
27d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org    return false;
28d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org
291d8a506405734d0cef9653704b036ca4f1388960stefan  return transport_->SendRtp(packet, length, options);
30e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org}
31e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org
322d566686a23fe93ada58f1c38a0d4b9a0d68556epbosbool TransportAdapter::SendRtcp(const uint8_t* packet, size_t length) {
33d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org  if (enabled_.Value() == 0)
34d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org    return false;
35d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org
362d566686a23fe93ada58f1c38a0d4b9a0d68556epbos  return transport_->SendRtcp(packet, length);
37e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org}
38e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org
39d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.orgvoid TransportAdapter::Enable() {
40d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org  // If this exchange fails it means enabled_ was already true, no need to
41d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org  // check result and iterate.
42d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org  enabled_.CompareExchange(1, 0);
43d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org}
44d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org
45d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.orgvoid TransportAdapter::Disable() { enabled_.CompareExchange(0, 1); }
46d9b9560ee50c236efcb690ee479021b415f7dfd4sprang@webrtc.org
47e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org}  // namespace internal
48e75a1bf45fb66f384701c375e77af3fe833b68cdpbos@webrtc.org}  // namespace webrtc
49