OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 #include "webrtc/voice_engine/test/channel_transport/traffic_control_win.h" | 11 #include "webrtc/voice_engine/test/channel_transport/traffic_control_win.h" |
12 | 12 |
13 #include <assert.h> | 13 #include <assert.h> |
14 | 14 |
15 #include "webrtc/system_wrappers/include/trace.h" | 15 #include "webrtc/system_wrappers/include/trace.h" |
16 | 16 |
17 namespace webrtc { | 17 namespace webrtc { |
18 namespace test { | 18 namespace test { |
19 | 19 |
20 TrafficControlWindows* TrafficControlWindows::instance = NULL; | 20 TrafficControlWindows* TrafficControlWindows::instance = nullptr; |
21 uint32_t TrafficControlWindows::refCounter = 0; | 21 uint32_t TrafficControlWindows::refCounter = 0; |
22 | 22 |
23 TrafficControlWindows::TrafficControlWindows(const int32_t id) | 23 TrafficControlWindows::TrafficControlWindows(const int32_t id) |
24 { | 24 { |
25 } | 25 } |
26 | 26 |
27 TrafficControlWindows* TrafficControlWindows::GetInstance( | 27 TrafficControlWindows* TrafficControlWindows::GetInstance( |
28 const int32_t id) | 28 const int32_t id) |
29 { | 29 { |
30 if(instance != NULL) | 30 if (instance != nullptr) { |
31 { | 31 WEBRTC_TRACE(kTraceDebug, kTraceTransport, id, |
32 WEBRTC_TRACE( | 32 "TrafficControlWindows - Returning already created object"); |
33 kTraceDebug, | 33 refCounter++; |
34 kTraceTransport, | 34 return instance; |
35 id, | |
36 "TrafficControlWindows - Returning already created object"); | |
37 refCounter++; | |
38 return instance; | |
39 } | 35 } |
40 | 36 |
41 WEBRTC_TRACE(kTraceMemory, kTraceTransport, id, | 37 WEBRTC_TRACE(kTraceMemory, kTraceTransport, id, |
42 "TrafficControlWindows - Creating new object"); | 38 "TrafficControlWindows - Creating new object"); |
43 instance = new TrafficControlWindows(id); | 39 instance = new TrafficControlWindows(id); |
44 if(instance == NULL) | 40 if (instance == nullptr) { |
45 { | 41 WEBRTC_TRACE(kTraceMemory, kTraceTransport, id, |
46 WEBRTC_TRACE(kTraceMemory, kTraceTransport, id, | 42 "TrafficControlWindows - Error allocating memory"); |
47 "TrafficControlWindows - Error allocating memory"); | 43 return nullptr; |
48 return NULL; | |
49 } | 44 } |
50 | 45 |
51 instance->tcRegister = NULL; | 46 instance->tcRegister = nullptr; |
52 instance->tcDeregister = NULL; | 47 instance->tcDeregister = nullptr; |
53 | 48 |
54 instance->tcEnumerate = NULL; | 49 instance->tcEnumerate = nullptr; |
55 instance->tcOpenInterface = NULL; | 50 instance->tcOpenInterface = nullptr; |
56 instance->tcCloseInterface = NULL; | 51 instance->tcCloseInterface = nullptr; |
57 | 52 |
58 instance->tcAddFlow = NULL; | 53 instance->tcAddFlow = nullptr; |
59 instance->tcDeleteFlow = NULL; | 54 instance->tcDeleteFlow = nullptr; |
60 | 55 |
61 instance->tcAddFilter = NULL; | 56 instance->tcAddFilter = nullptr; |
62 instance->tcDeleteFilter = NULL; | 57 instance->tcDeleteFilter = nullptr; |
63 | 58 |
64 HMODULE trafficLib = LoadLibrary(TEXT("traffic.dll")); | 59 HMODULE trafficLib = LoadLibrary(TEXT("traffic.dll")); |
65 if(trafficLib == NULL) | 60 if (trafficLib == nullptr) { |
66 { | 61 WEBRTC_TRACE( |
67 WEBRTC_TRACE( | 62 kTraceWarning, kTraceTransport, id, |
68 kTraceWarning, | 63 "TrafficControlWindows - No QOS support, LoadLibrary returned nullptr,
\ |
69 kTraceTransport, | |
70 id, | |
71 "TrafficControlWindows - No QOS support, LoadLibrary returned NULL,\ | |
72 last error: %d\n", | 64 last error: %d\n", |
73 GetLastError()); | 65 GetLastError()); |
74 delete instance; | 66 delete instance; |
75 instance = NULL; | 67 instance = nullptr; |
76 return NULL; | 68 return nullptr; |
77 } | 69 } |
78 | 70 |
79 instance->tcRegister = (registerFn)GetProcAddress(trafficLib, | 71 instance->tcRegister = (registerFn)GetProcAddress(trafficLib, |
80 "TcRegisterClient"); | 72 "TcRegisterClient"); |
81 instance->tcDeregister = (deregisterFn)GetProcAddress(trafficLib, | 73 instance->tcDeregister = (deregisterFn)GetProcAddress(trafficLib, |
82 "TcDeregisterClient"); | 74 "TcDeregisterClient"); |
83 instance->tcEnumerate = (enumerateFn)GetProcAddress( | 75 instance->tcEnumerate = (enumerateFn)GetProcAddress( |
84 trafficLib, | 76 trafficLib, |
85 "TcEnumerateInterfaces"); | 77 "TcEnumerateInterfaces"); |
86 instance->tcOpenInterface = (openInterfaceFn)GetProcAddress( | 78 instance->tcOpenInterface = (openInterfaceFn)GetProcAddress( |
87 trafficLib, | 79 trafficLib, |
88 "TcOpenInterfaceW"); | 80 "TcOpenInterfaceW"); |
89 instance->tcCloseInterface = (closeInterfaceFn)GetProcAddress( | 81 instance->tcCloseInterface = (closeInterfaceFn)GetProcAddress( |
90 trafficLib, | 82 trafficLib, |
91 "TcCloseInterface"); | 83 "TcCloseInterface"); |
92 instance->tcAddFlow = (flowAddFn)GetProcAddress(trafficLib, | 84 instance->tcAddFlow = (flowAddFn)GetProcAddress(trafficLib, |
93 "TcAddFlow"); | 85 "TcAddFlow"); |
94 instance->tcDeleteFlow = (flowDeleteFn)GetProcAddress(trafficLib, | 86 instance->tcDeleteFlow = (flowDeleteFn)GetProcAddress(trafficLib, |
95 "TcDeleteFlow"); | 87 "TcDeleteFlow"); |
96 | 88 |
97 instance->tcAddFilter = (filterAddFn)GetProcAddress(trafficLib, | 89 instance->tcAddFilter = (filterAddFn)GetProcAddress(trafficLib, |
98 "TcAddFilter"); | 90 "TcAddFilter"); |
99 instance->tcDeleteFilter = (filterDeleteFn)GetProcAddress(trafficLib, | 91 instance->tcDeleteFilter = (filterDeleteFn)GetProcAddress(trafficLib, |
100 "TcDeleteFilter"); | 92 "TcDeleteFilter"); |
101 | 93 |
102 if(instance->tcRegister == NULL || | 94 if (instance->tcRegister == nullptr || instance->tcDeregister == nullptr || |
103 instance->tcDeregister == NULL || | 95 instance->tcEnumerate == nullptr || |
104 instance->tcEnumerate == NULL || | 96 instance->tcOpenInterface == nullptr || |
105 instance->tcOpenInterface == NULL || | 97 instance->tcCloseInterface == nullptr || |
106 instance->tcCloseInterface == NULL || | 98 instance->tcAddFlow == nullptr || instance->tcAddFilter == nullptr || |
107 instance->tcAddFlow == NULL || | 99 instance->tcDeleteFlow == nullptr || |
108 instance->tcAddFilter == NULL || | 100 instance->tcDeleteFilter == nullptr) { |
109 instance->tcDeleteFlow == NULL || | 101 delete instance; |
110 instance->tcDeleteFilter == NULL) | 102 instance = nullptr; |
111 { | 103 WEBRTC_TRACE(kTraceError, kTraceTransport, id, |
112 delete instance; | 104 "TrafficControlWindows - Could not find function pointer for\ |
113 instance = NULL; | |
114 WEBRTC_TRACE( | |
115 kTraceError, | |
116 kTraceTransport, | |
117 id, | |
118 "TrafficControlWindows - Could not find function pointer for\ | |
119 traffic control functions"); | 105 traffic control functions"); |
120 WEBRTC_TRACE( | 106 WEBRTC_TRACE(kTraceError, kTraceTransport, id, |
121 kTraceError, | 107 "Tcregister : %x, tcDeregister: %x, tcEnumerate: %x,\ |
122 kTraceTransport, | |
123 id, | |
124 "Tcregister : %x, tcDeregister: %x, tcEnumerate: %x,\ | |
125 tcOpenInterface: %x, tcCloseInterface: %x, tcAddFlow: %x, tcAddFilter: %x,\ | 108 tcOpenInterface: %x, tcCloseInterface: %x, tcAddFlow: %x, tcAddFilter: %x,\ |
126 tcDeleteFlow: %x, tcDeleteFilter: %x", | 109 tcDeleteFlow: %x, tcDeleteFilter: %x", |
127 instance->tcRegister, | 110 instance->tcRegister, instance->tcDeregister, |
128 instance->tcDeregister, | 111 instance->tcEnumerate, instance->tcOpenInterface, |
129 instance->tcEnumerate, | 112 instance->tcCloseInterface, instance->tcAddFlow, |
130 instance->tcOpenInterface, | 113 instance->tcAddFilter, instance->tcDeleteFlow, |
131 instance->tcCloseInterface, | 114 instance->tcDeleteFilter); |
132 instance->tcAddFlow, | 115 return nullptr; |
133 instance->tcAddFilter, | |
134 instance->tcDeleteFlow, | |
135 instance->tcDeleteFilter ); | |
136 return NULL; | |
137 } | 116 } |
138 refCounter++; | 117 refCounter++; |
139 return instance; | 118 return instance; |
140 } | 119 } |
141 | 120 |
142 void TrafficControlWindows::Release(TrafficControlWindows* gtc) | 121 void TrafficControlWindows::Release(TrafficControlWindows* gtc) |
143 { | 122 { |
144 if (0 == refCounter) | 123 if (0 == refCounter) |
145 { | 124 { |
146 WEBRTC_TRACE(kTraceError, kTraceTransport, -1, | 125 WEBRTC_TRACE(kTraceError, kTraceTransport, -1, |
147 "TrafficControlWindows - Cannot release, refCounter is 0"); | 126 "TrafficControlWindows - Cannot release, refCounter is 0"); |
148 return; | 127 return; |
149 } | 128 } |
150 if (NULL == gtc) | 129 if (nullptr == gtc) { |
151 { | 130 WEBRTC_TRACE(kTraceDebug, kTraceTransport, -1, |
152 WEBRTC_TRACE(kTraceDebug, kTraceTransport, -1, | 131 "TrafficControlWindows - Not releasing, gtc is null"); |
153 "TrafficControlWindows - Not releasing, gtc is NULL"); | 132 return; |
154 return; | |
155 } | 133 } |
156 | 134 |
157 WEBRTC_TRACE(kTraceDebug, kTraceTransport, -1, | 135 WEBRTC_TRACE(kTraceDebug, kTraceTransport, -1, |
158 "TrafficControlWindows - Releasing object"); | 136 "TrafficControlWindows - Releasing object"); |
159 refCounter--; | 137 refCounter--; |
160 if ((0 == refCounter) && instance) | 138 if ((0 == refCounter) && instance) |
161 { | 139 { |
162 WEBRTC_TRACE(kTraceMemory, kTraceTransport, -1, | 140 WEBRTC_TRACE(kTraceMemory, kTraceTransport, -1, |
163 "TrafficControlWindows - Deleting object"); | 141 "TrafficControlWindows - Deleting object"); |
164 delete instance; | 142 delete instance; |
165 instance = NULL; | 143 instance = nullptr; |
166 } | 144 } |
167 } | 145 } |
168 | 146 |
169 ULONG TrafficControlWindows::TcRegisterClient( | 147 ULONG TrafficControlWindows::TcRegisterClient( |
170 ULONG TciVersion, | 148 ULONG TciVersion, |
171 HANDLE ClRegCtx, | 149 HANDLE ClRegCtx, |
172 PTCI_CLIENT_FUNC_LIST ClientHandlerList, | 150 PTCI_CLIENT_FUNC_LIST ClientHandlerList, |
173 PHANDLE pClientHandle) | 151 PHANDLE pClientHandle) |
174 { | 152 { |
175 assert(tcRegister != NULL); | 153 assert(tcRegister != nullptr); |
176 | 154 |
177 return tcRegister(TciVersion, ClRegCtx, ClientHandlerList, pClientHandle); | 155 return tcRegister(TciVersion, ClRegCtx, ClientHandlerList, pClientHandle); |
178 } | 156 } |
179 | 157 |
180 ULONG TrafficControlWindows::TcDeregisterClient(HANDLE clientHandle) | 158 ULONG TrafficControlWindows::TcDeregisterClient(HANDLE clientHandle) |
181 { | 159 { |
182 assert(tcDeregister != NULL); | 160 assert(tcDeregister != nullptr); |
183 | 161 |
184 return tcDeregister(clientHandle); | 162 return tcDeregister(clientHandle); |
185 } | 163 } |
186 | 164 |
187 | 165 |
188 ULONG TrafficControlWindows::TcEnumerateInterfaces( | 166 ULONG TrafficControlWindows::TcEnumerateInterfaces( |
189 HANDLE ClientHandle, | 167 HANDLE ClientHandle, |
190 PULONG pBufferSize, | 168 PULONG pBufferSize, |
191 PTC_IFC_DESCRIPTOR interfaceBuffer) | 169 PTC_IFC_DESCRIPTOR interfaceBuffer) |
192 { | 170 { |
193 assert(tcEnumerate != NULL); | 171 assert(tcEnumerate != nullptr); |
194 | 172 |
195 return tcEnumerate(ClientHandle, pBufferSize, interfaceBuffer); | 173 return tcEnumerate(ClientHandle, pBufferSize, interfaceBuffer); |
196 } | 174 } |
197 | 175 |
198 | 176 |
199 ULONG TrafficControlWindows::TcOpenInterfaceW(LPWSTR pInterfaceName, | 177 ULONG TrafficControlWindows::TcOpenInterfaceW(LPWSTR pInterfaceName, |
200 HANDLE ClientHandle, | 178 HANDLE ClientHandle, |
201 HANDLE ClIfcCtx, | 179 HANDLE ClIfcCtx, |
202 PHANDLE pIfcHandle) | 180 PHANDLE pIfcHandle) |
203 { | 181 { |
204 assert(tcOpenInterface != NULL); | 182 assert(tcOpenInterface != nullptr); |
205 | 183 |
206 return tcOpenInterface(pInterfaceName, ClientHandle, ClIfcCtx, pIfcHandle); | 184 return tcOpenInterface(pInterfaceName, ClientHandle, ClIfcCtx, pIfcHandle); |
207 | |
208 } | 185 } |
209 | 186 |
210 ULONG TrafficControlWindows::TcCloseInterface(HANDLE IfcHandle) | 187 ULONG TrafficControlWindows::TcCloseInterface(HANDLE IfcHandle) |
211 { | 188 { |
212 assert(tcCloseInterface != NULL); | 189 assert(tcCloseInterface != nullptr); |
213 | 190 |
214 return tcCloseInterface(IfcHandle); | 191 return tcCloseInterface(IfcHandle); |
215 } | 192 } |
216 | 193 |
217 ULONG TrafficControlWindows::TcAddFlow(HANDLE IfcHandle, HANDLE ClFlowCtx, | 194 ULONG TrafficControlWindows::TcAddFlow(HANDLE IfcHandle, HANDLE ClFlowCtx, |
218 ULONG Flags, PTC_GEN_FLOW pGenericFlow, | 195 ULONG Flags, PTC_GEN_FLOW pGenericFlow, |
219 PHANDLE pFlowHandle) | 196 PHANDLE pFlowHandle) |
220 { | 197 { |
221 assert(tcAddFlow != NULL); | 198 assert(tcAddFlow != nullptr); |
222 return tcAddFlow(IfcHandle, ClFlowCtx, Flags, pGenericFlow, pFlowHandle); | 199 return tcAddFlow(IfcHandle, ClFlowCtx, Flags, pGenericFlow, pFlowHandle); |
223 } | 200 } |
224 | 201 |
225 ULONG TrafficControlWindows::TcAddFilter(HANDLE FlowHandle, | 202 ULONG TrafficControlWindows::TcAddFilter(HANDLE FlowHandle, |
226 PTC_GEN_FILTER pGenericFilter, | 203 PTC_GEN_FILTER pGenericFilter, |
227 PHANDLE pFilterHandle) | 204 PHANDLE pFilterHandle) |
228 { | 205 { |
229 assert(tcAddFilter != NULL); | 206 assert(tcAddFilter != nullptr); |
230 return tcAddFilter(FlowHandle, pGenericFilter, pFilterHandle); | 207 return tcAddFilter(FlowHandle, pGenericFilter, pFilterHandle); |
231 } | 208 } |
232 | 209 |
233 ULONG TrafficControlWindows::TcDeleteFlow(HANDLE FlowHandle) | 210 ULONG TrafficControlWindows::TcDeleteFlow(HANDLE FlowHandle) |
234 { | 211 { |
235 assert(tcDeleteFlow != NULL); | 212 assert(tcDeleteFlow != nullptr); |
236 return tcDeleteFlow(FlowHandle); | 213 return tcDeleteFlow(FlowHandle); |
237 | |
238 } | 214 } |
239 | 215 |
240 ULONG TrafficControlWindows::TcDeleteFilter(HANDLE FilterHandle) | 216 ULONG TrafficControlWindows::TcDeleteFilter(HANDLE FilterHandle) |
241 { | 217 { |
242 assert(tcDeleteFilter != NULL); | 218 assert(tcDeleteFilter != nullptr); |
243 return tcDeleteFilter(FilterHandle); | 219 return tcDeleteFilter(FilterHandle); |
244 } | 220 } |
245 | 221 |
246 void MyClNotifyHandler(HANDLE ClRegCtx, HANDLE ClIfcCtx, ULONG Event, | 222 void MyClNotifyHandler(HANDLE ClRegCtx, HANDLE ClIfcCtx, ULONG Event, |
247 HANDLE SubCode, ULONG BufSize, PVOID Buffer) | 223 HANDLE SubCode, ULONG BufSize, PVOID Buffer) |
248 { | 224 { |
249 } | 225 } |
250 | 226 |
251 } // namespace test | 227 } // namespace test |
252 } // namespace webrtc | 228 } // namespace webrtc |
OLD | NEW |