diff --git a/webrtc/test/channel_transport/udp_socket_manager_posix.h b/webrtc/test/channel_transport/udp_socket_manager_posix.h index 45e55af99a..92bff6b0ee 100644 --- a/webrtc/test/channel_transport/udp_socket_manager_posix.h +++ b/webrtc/test/channel_transport/udp_socket_manager_posix.h @@ -23,9 +23,6 @@ #include "webrtc/test/channel_transport/udp_socket_wrapper.h" namespace webrtc { - -class ConditionVariableWrapper; - namespace test { class UdpSocketPosix; diff --git a/webrtc/test/channel_transport/udp_socket_posix.cc b/webrtc/test/channel_transport/udp_socket_posix.cc index 639d444f55..8ed5825dbc 100644 --- a/webrtc/test/channel_transport/udp_socket_posix.cc +++ b/webrtc/test/channel_transport/udp_socket_posix.cc @@ -27,7 +27,10 @@ namespace webrtc { namespace test { UdpSocketPosix::UdpSocketPosix(const int32_t id, UdpSocketManager* mgr, - bool ipV6Enable) : _id(id) + bool ipV6Enable) + : _id(id), + _closeBlockingCompletedCond(true, false), + _readyForDeletionCond(true, false) { WEBRTC_TRACE(kTraceMemory, kTraceTransport, id, "UdpSocketPosix::UdpSocketPosix()"); @@ -37,13 +40,9 @@ UdpSocketPosix::UdpSocketPosix(const int32_t id, UdpSocketManager* mgr, _obj = NULL; _incomingCb = NULL; - _readyForDeletionCond = ConditionVariableWrapper::CreateConditionVariable(); - _closeBlockingCompletedCond = - ConditionVariableWrapper::CreateConditionVariable(); - _cs = CriticalSectionWrapper::CreateCriticalSection(); _readyForDeletion = false; _closeBlockingActive = false; - _closeBlockingCompleted= false; + _closeBlockingCompleted = false; if(ipV6Enable) { _socket = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP); @@ -75,20 +74,6 @@ UdpSocketPosix::~UdpSocketPosix() close(_socket); _socket = INVALID_SOCKET; } - if(_readyForDeletionCond) - { - delete _readyForDeletionCond; - } - - if(_closeBlockingCompletedCond) - { - delete _closeBlockingCompletedCond; - } - - if(_cs) - { - delete _cs; - } } bool UdpSocketPosix::SetCallback(CallbackObj obj, IncomingSocketCallback cb) @@ -227,41 +212,42 @@ bool UdpSocketPosix::WantsIncoming() { return _wantsIncoming; } void UdpSocketPosix::CloseBlocking() { - _cs->Enter(); + rtc::CritScope lock(&_cs); _closeBlockingActive = true; if(!CleanUp()) { _closeBlockingActive = false; - _cs->Leave(); return; } - while(!_readyForDeletion) + if(!_readyForDeletion) { - _readyForDeletionCond->SleepCS(*_cs); + _cs.Leave(); + _readyForDeletionCond.Wait(rtc::Event::kForever); + _cs.Enter(); } _closeBlockingCompleted = true; - _closeBlockingCompletedCond->Wake(); - _cs->Leave(); + _closeBlockingCompletedCond.Set(); } void UdpSocketPosix::ReadyForDeletion() { - _cs->Enter(); + rtc::CritScope lock(&_cs); if(!_closeBlockingActive) { - _cs->Leave(); return; } + close(_socket); _socket = INVALID_SOCKET; _readyForDeletion = true; - _readyForDeletionCond->Wake(); - while(!_closeBlockingCompleted) + _readyForDeletionCond.Set(); + if(!_closeBlockingCompleted) { - _closeBlockingCompletedCond->SleepCS(*_cs); + _cs.Leave(); + _closeBlockingCompletedCond.Wait(rtc::Event::kForever); + _cs.Enter(); } - _cs->Leave(); } bool UdpSocketPosix::CleanUp() diff --git a/webrtc/test/channel_transport/udp_socket_posix.h b/webrtc/test/channel_transport/udp_socket_posix.h index c391b2e397..537b52e393 100644 --- a/webrtc/test/channel_transport/udp_socket_posix.h +++ b/webrtc/test/channel_transport/udp_socket_posix.h @@ -16,8 +16,8 @@ #include #include -#include "webrtc/system_wrappers/include/condition_variable_wrapper.h" -#include "webrtc/system_wrappers/include/critical_section_wrapper.h" +#include "webrtc/base/event.h" +#include "webrtc/base/criticalsection.h" #include "webrtc/test/channel_transport/udp_socket_wrapper.h" namespace webrtc { @@ -78,14 +78,14 @@ private: SOCKET _socket; UdpSocketManager* _mgr; - ConditionVariableWrapper* _closeBlockingCompletedCond; - ConditionVariableWrapper* _readyForDeletionCond; + rtc::Event _closeBlockingCompletedCond; + rtc::Event _readyForDeletionCond; bool _closeBlockingActive; bool _closeBlockingCompleted; bool _readyForDeletion; - CriticalSectionWrapper* _cs; + rtc::CriticalSection _cs; }; } // namespace test