1/* 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10#ifndef WEBRTC_VIDEO_ENGINE_TEST_COMMON_DIRECT_TRANSPORT_H_ 11#define WEBRTC_VIDEO_ENGINE_TEST_COMMON_DIRECT_TRANSPORT_H_ 12 13#include <assert.h> 14 15#include <deque> 16 17#include "webrtc/system_wrappers/interface/critical_section_wrapper.h" 18#include "webrtc/system_wrappers/interface/event_wrapper.h" 19#include "webrtc/system_wrappers/interface/scoped_ptr.h" 20#include "webrtc/system_wrappers/interface/thread_wrapper.h" 21#include "webrtc/test/fake_network_pipe.h" 22#include "webrtc/transport.h" 23 24namespace webrtc { 25 26class Clock; 27class PacketReceiver; 28 29namespace test { 30 31class DirectTransport : public newapi::Transport { 32 public: 33 DirectTransport(); 34 explicit DirectTransport(const FakeNetworkPipe::Config& config); 35 ~DirectTransport(); 36 37 void SetConfig(const FakeNetworkPipe::Config& config); 38 39 virtual void StopSending(); 40 virtual void SetReceiver(PacketReceiver* receiver); 41 42 virtual bool SendRtp(const uint8_t* data, size_t length) OVERRIDE; 43 virtual bool SendRtcp(const uint8_t* data, size_t length) OVERRIDE; 44 45 private: 46 static bool NetworkProcess(void* transport); 47 bool SendPackets(); 48 49 scoped_ptr<CriticalSectionWrapper> lock_; 50 scoped_ptr<EventWrapper> packet_event_; 51 scoped_ptr<ThreadWrapper> thread_; 52 Clock* const clock_; 53 54 bool shutting_down_; 55 56 FakeNetworkPipe fake_network_; 57}; 58} // namespace test 59} // namespace webrtc 60 61#endif // WEBRTC_VIDEO_ENGINE_TEST_COMMON_DIRECT_TRANSPORT_H_ 62