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