| 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 |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 this, | 189 this, |
| 190 "UdpSocketManagerPosixImplThread"), | 190 "UdpSocketManagerPosixImplThread"), |
| 191 _critSectList(CriticalSectionWrapper::CreateCriticalSection()) { | 191 _critSectList(CriticalSectionWrapper::CreateCriticalSection()) { |
| 192 FD_ZERO(&_readFds); | 192 FD_ZERO(&_readFds); |
| 193 WEBRTC_TRACE(kTraceMemory, kTraceTransport, -1, | 193 WEBRTC_TRACE(kTraceMemory, kTraceTransport, -1, |
| 194 "UdpSocketManagerPosix created"); | 194 "UdpSocketManagerPosix created"); |
| 195 } | 195 } |
| 196 | 196 |
| 197 UdpSocketManagerPosixImpl::~UdpSocketManagerPosixImpl() | 197 UdpSocketManagerPosixImpl::~UdpSocketManagerPosixImpl() |
| 198 { | 198 { |
| 199 if (_critSectList != NULL) | 199 if (_critSectList != nullptr) { |
| 200 { | 200 UpdateSocketMap(); |
| 201 UpdateSocketMap(); | |
| 202 | 201 |
| 203 _critSectList->Enter(); | 202 _critSectList->Enter(); |
| 204 for (std::map<SOCKET, UdpSocketPosix*>::iterator it = | 203 for (std::map<SOCKET, UdpSocketPosix*>::iterator it = _socketMap.begin(); |
| 205 _socketMap.begin(); | 204 it != _socketMap.end(); ++it) { |
| 206 it != _socketMap.end(); | 205 delete it->second; |
| 207 ++it) { | 206 } |
| 208 delete it->second; | 207 _socketMap.clear(); |
| 209 } | 208 _critSectList->Leave(); |
| 210 _socketMap.clear(); | |
| 211 _critSectList->Leave(); | |
| 212 | 209 |
| 213 delete _critSectList; | 210 delete _critSectList; |
| 214 } | 211 } |
| 215 | 212 |
| 216 WEBRTC_TRACE(kTraceMemory, kTraceTransport, -1, | 213 WEBRTC_TRACE(kTraceMemory, kTraceTransport, -1, |
| 217 "UdpSocketManagerPosix deleted"); | 214 "UdpSocketManagerPosix deleted"); |
| 218 } | 215 } |
| 219 | 216 |
| 220 bool UdpSocketManagerPosixImpl::Start() | 217 bool UdpSocketManagerPosixImpl::Start() |
| 221 { | 218 { |
| 222 WEBRTC_TRACE(kTraceStateInfo, kTraceTransport, -1, | 219 WEBRTC_TRACE(kTraceStateInfo, kTraceTransport, -1, |
| 223 "Start UdpSocketManagerPosix"); | 220 "Start UdpSocketManagerPosix"); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 252 ++it) { | 249 ++it) { |
| 253 doSelect = true; | 250 doSelect = true; |
| 254 if (it->first > maxFd) | 251 if (it->first > maxFd) |
| 255 maxFd = it->first; | 252 maxFd = it->first; |
| 256 FD_SET(it->first, &_readFds); | 253 FD_SET(it->first, &_readFds); |
| 257 } | 254 } |
| 258 | 255 |
| 259 int num = 0; | 256 int num = 0; |
| 260 if (doSelect) | 257 if (doSelect) |
| 261 { | 258 { |
| 262 num = select(maxFd+1, &_readFds, NULL, NULL, &timeout); | 259 num = select(maxFd + 1, &_readFds, nullptr, nullptr, &timeout); |
| 263 | 260 |
| 264 if (num == SOCKET_ERROR) | 261 if (num == SOCKET_ERROR) { |
| 265 { | 262 // Timeout = 10 ms. |
| 266 // Timeout = 10 ms. | 263 SleepMs(10); |
| 267 SleepMs(10); | 264 return true; |
| 268 return true; | |
| 269 } | 265 } |
| 270 }else | 266 }else |
| 271 { | 267 { |
| 272 // Timeout = 10 ms. | 268 // Timeout = 10 ms. |
| 273 SleepMs(10); | 269 SleepMs(10); |
| 274 return true; | 270 return true; |
| 275 } | 271 } |
| 276 | 272 |
| 277 for (std::map<SOCKET, UdpSocketPosix*>::iterator it = _socketMap.begin(); | 273 for (std::map<SOCKET, UdpSocketPosix*>::iterator it = _socketMap.begin(); |
| 278 it != _socketMap.end(); | 274 it != _socketMap.end(); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 _critSectList->Leave(); | 332 _critSectList->Leave(); |
| 337 return false; | 333 return false; |
| 338 } | 334 } |
| 339 | 335 |
| 340 void UdpSocketManagerPosixImpl::UpdateSocketMap() | 336 void UdpSocketManagerPosixImpl::UpdateSocketMap() |
| 341 { | 337 { |
| 342 // Remove items in remove list. | 338 // Remove items in remove list. |
| 343 _critSectList->Enter(); | 339 _critSectList->Enter(); |
| 344 for (FdList::iterator iter = _removeList.begin(); | 340 for (FdList::iterator iter = _removeList.begin(); |
| 345 iter != _removeList.end(); ++iter) { | 341 iter != _removeList.end(); ++iter) { |
| 346 UdpSocketPosix* deleteSocket = NULL; | 342 UdpSocketPosix* deleteSocket = nullptr; |
| 347 SOCKET removeFD = *iter; | 343 SOCKET removeFD = *iter; |
| 348 | 344 |
| 349 // If the socket is in the add list it hasn't been added to the socket | 345 // If the socket is in the add list it hasn't been added to the socket |
| 350 // map yet. Just remove the socket from the add list. | 346 // map yet. Just remove the socket from the add list. |
| 351 for (SocketList::iterator iter = _addList.begin(); | 347 for (SocketList::iterator iter = _addList.begin(); iter != _addList.end(); |
| 352 iter != _addList.end(); ++iter) { | 348 ++iter) { |
| 353 UdpSocketPosix* addSocket = static_cast<UdpSocketPosix*>(*iter); | 349 UdpSocketPosix* addSocket = static_cast<UdpSocketPosix*>(*iter); |
| 354 SOCKET addFD = addSocket->GetFd(); | 350 SOCKET addFD = addSocket->GetFd(); |
| 355 if(removeFD == addFD) | 351 if (removeFD == addFD) { |
| 356 { | 352 deleteSocket = addSocket; |
| 357 deleteSocket = addSocket; | 353 _addList.erase(iter); |
| 358 _addList.erase(iter); | 354 break; |
| 359 break; | 355 } |
| 360 } | |
| 361 } | 356 } |
| 362 | 357 |
| 363 // Find and remove socket from _socketMap. | 358 // Find and remove socket from _socketMap. |
| 364 std::map<SOCKET, UdpSocketPosix*>::iterator it = | 359 std::map<SOCKET, UdpSocketPosix*>::iterator it = |
| 365 _socketMap.find(removeFD); | 360 _socketMap.find(removeFD); |
| 366 if(it != _socketMap.end()) | 361 if(it != _socketMap.end()) |
| 367 { | 362 { |
| 368 deleteSocket = it->second; | 363 deleteSocket = it->second; |
| 369 _socketMap.erase(it); | 364 _socketMap.erase(it); |
| 370 } | 365 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 383 if(s) { | 378 if(s) { |
| 384 _socketMap[s->GetFd()] = s; | 379 _socketMap[s->GetFd()] = s; |
| 385 } | 380 } |
| 386 } | 381 } |
| 387 _addList.clear(); | 382 _addList.clear(); |
| 388 _critSectList->Leave(); | 383 _critSectList->Leave(); |
| 389 } | 384 } |
| 390 | 385 |
| 391 } // namespace test | 386 } // namespace test |
| 392 } // namespace webrtc | 387 } // namespace webrtc |
| OLD | NEW |