1/* 2 * Copyright (c) 2012 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 11#include "webrtc/test/channel_transport/udp_socket_manager_wrapper.h" 12 13#include <assert.h> 14 15#ifdef _WIN32 16#include "webrtc/system_wrappers/include/fix_interlocked_exchange_pointer_win.h" 17#include "webrtc/test/channel_transport/udp_socket2_manager_win.h" 18#else 19#include "webrtc/test/channel_transport/udp_socket_manager_posix.h" 20#endif 21 22namespace webrtc { 23namespace test { 24 25UdpSocketManager* UdpSocketManager::CreateInstance() 26{ 27#if defined(_WIN32) 28 return static_cast<UdpSocketManager*>(new UdpSocket2ManagerWindows()); 29#else 30 return new UdpSocketManagerPosix(); 31#endif 32} 33 34UdpSocketManager* UdpSocketManager::StaticInstance( 35 CountOperation count_operation, 36 const int32_t id, 37 uint8_t& numOfWorkThreads) 38{ 39 UdpSocketManager* impl = 40 GetStaticInstance<UdpSocketManager>(count_operation); 41 if (count_operation == kAddRef && impl != NULL) { 42 if (impl->Init(id, numOfWorkThreads)) { 43 impl->Start(); 44 } 45 } 46 return impl; 47} 48 49UdpSocketManager* UdpSocketManager::Create(const int32_t id, 50 uint8_t& numOfWorkThreads) 51{ 52 return UdpSocketManager::StaticInstance(kAddRef, id, numOfWorkThreads); 53} 54 55void UdpSocketManager::Return() 56{ 57 uint8_t numOfWorkThreads = 0; 58 UdpSocketManager::StaticInstance(kRelease, -1, 59 numOfWorkThreads); 60} 61 62UdpSocketManager::UdpSocketManager() : _numOfWorkThreads(0) 63{ 64} 65 66uint8_t UdpSocketManager::WorkThreads() const 67{ 68 return _numOfWorkThreads; 69} 70 71} // namespace test 72} // namespace webrtc 73