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
22 namespace webrtc {
23 namespace test {
24
CreateInstance()25 UdpSocketManager* UdpSocketManager::CreateInstance()
26 {
27 #if defined(_WIN32)
28 return static_cast<UdpSocketManager*>(new UdpSocket2ManagerWindows());
29 #else
30 return new UdpSocketManagerPosix();
31 #endif
32 }
33
StaticInstance(CountOperation count_operation,const int32_t id,uint8_t & numOfWorkThreads)34 UdpSocketManager* 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
Create(const int32_t id,uint8_t & numOfWorkThreads)49 UdpSocketManager* UdpSocketManager::Create(const int32_t id,
50 uint8_t& numOfWorkThreads)
51 {
52 return UdpSocketManager::StaticInstance(kAddRef, id, numOfWorkThreads);
53 }
54
Return()55 void UdpSocketManager::Return()
56 {
57 uint8_t numOfWorkThreads = 0;
58 UdpSocketManager::StaticInstance(kRelease, -1,
59 numOfWorkThreads);
60 }
61
UdpSocketManager()62 UdpSocketManager::UdpSocketManager() : _numOfWorkThreads(0)
63 {
64 }
65
WorkThreads() const66 uint8_t UdpSocketManager::WorkThreads() const
67 {
68 return _numOfWorkThreads;
69 }
70
71 } // namespace test
72 } // namespace webrtc
73