Removes usage of ListWrapper from several files.
BUG=2164
R=andrew@webrtc.org, pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/6269004
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@5373 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/test/channel_transport/udp_socket2_manager_win.cc b/test/channel_transport/udp_socket2_manager_win.cc
index 54bd42f..bfab51e 100644
--- a/test/channel_transport/udp_socket2_manager_win.cc
+++ b/test/channel_transport/udp_socket2_manager_win.cc
@@ -65,14 +65,11 @@
}
StopWorkerThreads();
- // All threads are stopped. Safe to delete them.
- ListItem* pItem = NULL;
- while((pItem = _workerThreadsList.First()) != NULL)
- {
- delete static_cast<UdpSocket2WorkerWindows*>(pItem->GetItem());
- _workerThreadsList.PopFront();
+ for (WorkerList::iterator iter = _workerThreadsList.begin();
+ iter != _workerThreadsList.end(); ++iter) {
+ delete *iter;
}
-
+ _workerThreadsList.clear();
_ioContextPool.Free();
_numOfActiveManagers--;
@@ -134,14 +131,10 @@
// Start worker threads.
_stopped = false;
int32_t error = 0;
- ListItem* pItem = _workerThreadsList.First();
- UdpSocket2WorkerWindows* pWorker;
- while(pItem != NULL && !error)
- {
- pWorker = (UdpSocket2WorkerWindows*)pItem->GetItem();
- if(!pWorker->Start())
- error = 1;
- pItem = _workerThreadsList.Next(pItem);
+ for (WorkerList::iterator iter = _workerThreadsList.begin();
+ iter != _workerThreadsList.end() && !error; ++iter) {
+ if(!(*iter)->Start())
+ error = 1;
}
if(error)
{
@@ -194,7 +187,7 @@
delete pWorker;
break;
}
- _workerThreadsList.PushFront(pWorker);
+ _workerThreadsList.push_front(pWorker);
i++;
}
if(error)
@@ -207,12 +200,11 @@
"creating work threads",
_managerNumber);
// Delete worker threads.
- ListItem* pItem = NULL;
- while((pItem = _workerThreadsList.First()) != NULL)
- {
- delete static_cast<UdpSocket2WorkerWindows*>(pItem->GetItem());
- _workerThreadsList.PopFront();
+ for (WorkerList::iterator iter = _workerThreadsList.begin();
+ iter != _workerThreadsList.end(); ++iter) {
+ delete *iter;
}
+ _workerThreadsList.clear();
_pCrit->Leave();
return false;
}
@@ -281,38 +273,30 @@
threadsStoped, numActicve Sockets=%d",
_managerNumber,
_numActiveSockets);
- UdpSocket2WorkerWindows* pWorker;
- ListItem* pItem = _workerThreadsList.First();
// Set worker threads to not alive so that they will stop calling
// UdpSocket2WorkerWindows::Run().
- while(pItem != NULL)
- {
- pWorker = (UdpSocket2WorkerWindows*)pItem->GetItem();
- pWorker->SetNotAlive();
- pItem = _workerThreadsList.Next(pItem);
+ for (WorkerList::iterator iter = _workerThreadsList.begin();
+ iter != _workerThreadsList.end(); ++iter) {
+ (*iter)->SetNotAlive();
}
// Release all threads waiting for GetQueuedCompletionStatus(..).
if(_ioCompletionHandle)
{
uint32_t i = 0;
- for(i = 0; i < _workerThreadsList.GetSize(); i++)
+ for(i = 0; i < _workerThreadsList.size(); i++)
{
PostQueuedCompletionStatus(_ioCompletionHandle, 0 ,0 , NULL);
}
}
- pItem = _workerThreadsList.First();
-
- while(pItem != NULL)
- {
- pWorker = (UdpSocket2WorkerWindows*)pItem->GetItem();
- if(pWorker->Stop() == false)
+ for (WorkerList::iterator iter = _workerThreadsList.begin();
+ iter != _workerThreadsList.end(); ++iter) {
+ if((*iter)->Stop() == false)
{
error = -1;
WEBRTC_TRACE(kTraceWarning, kTraceTransport, -1,
"failed to stop worker thread");
}
- pItem = _workerThreadsList.Next(pItem);
}
if(error)
diff --git a/test/channel_transport/udp_socket2_manager_win.h b/test/channel_transport/udp_socket2_manager_win.h
index 0eef997..956cc03 100644
--- a/test/channel_transport/udp_socket2_manager_win.h
+++ b/test/channel_transport/udp_socket2_manager_win.h
@@ -12,11 +12,11 @@
#define WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_SOCKET2_MANAGER_WINDOWS_H_
#include <winsock2.h>
+#include <list>
#include "webrtc/system_wrappers/interface/atomic32.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/event_wrapper.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/system_wrappers/interface/thread_wrapper.h"
#include "webrtc/test/channel_transport/udp_socket2_win.h"
#include "webrtc/test/channel_transport/udp_socket_manager_wrapper.h"
@@ -91,6 +91,27 @@
Atomic32 _inUse;
};
+class UdpSocket2WorkerWindows
+{
+public:
+ UdpSocket2WorkerWindows(HANDLE ioCompletionHandle);
+ virtual ~UdpSocket2WorkerWindows();
+
+ virtual bool Start();
+ virtual bool Stop();
+ virtual int32_t Init();
+ virtual void SetNotAlive();
+protected:
+ static bool Run(ThreadObj obj);
+ bool Process();
+private:
+ HANDLE _ioCompletionHandle;
+ ThreadWrapper*_pThread;
+ static int32_t _numOfWorkers;
+ int32_t _workerNumber;
+ volatile bool _stop;
+ bool _init;
+};
class UdpSocket2ManagerWindows : public UdpSocketManager
{
@@ -115,6 +136,7 @@
int32_t PushIoContext(PerIoContext* pIoContext);
private:
+ typedef std::list<UdpSocket2WorkerWindows*> WorkerList;
bool StopWorkerThreads();
bool StartWorkerThreads();
bool AddSocketPrv(UdpSocket2Windows* s);
@@ -129,35 +151,13 @@
volatile bool _stopped;
bool _init;
int32_t _numActiveSockets;
- ListWrapper _workerThreadsList;
+ WorkerList _workerThreadsList;
EventWrapper* _event;
HANDLE _ioCompletionHandle;
IoContextPool _ioContextPool;
};
-class UdpSocket2WorkerWindows
-{
-public:
- UdpSocket2WorkerWindows(HANDLE ioCompletionHandle);
- virtual ~UdpSocket2WorkerWindows();
-
- virtual bool Start();
- virtual bool Stop();
- virtual int32_t Init();
- virtual void SetNotAlive();
-protected:
- static bool Run(ThreadObj obj);
- bool Process();
-private:
- HANDLE _ioCompletionHandle;
- ThreadWrapper*_pThread;
- static int32_t _numOfWorkers;
- int32_t _workerNumber;
- volatile bool _stop;
- bool _init;
-};
-
} // namespace test
} // namespace webrtc
diff --git a/test/channel_transport/udp_socket2_win.h b/test/channel_transport/udp_socket2_win.h
index 0bc3581..e4d6b8c 100644
--- a/test/channel_transport/udp_socket2_win.h
+++ b/test/channel_transport/udp_socket2_win.h
@@ -23,7 +23,6 @@
#include "webrtc/system_wrappers/interface/condition_variable_wrapper.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/event_wrapper.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/system_wrappers/interface/rw_lock_wrapper.h"
#include "webrtc/system_wrappers/interface/trace.h"
#include "webrtc/test/channel_transport/udp_socket2_manager_win.h"
diff --git a/test/channel_transport/udp_socket_manager_posix.cc b/test/channel_transport/udp_socket_manager_posix.cc
index 5543814..1e13475 100644
--- a/test/channel_transport/udp_socket_manager_posix.cc
+++ b/test/channel_transport/udp_socket_manager_posix.cc
@@ -322,7 +322,7 @@
return false;
}
_critSectList->Enter();
- _addList.PushBack(s);
+ _addList.push_back(s);
_critSectList->Leave();
return true;
}
@@ -333,26 +333,24 @@
_critSectList->Enter();
// If the socket is in the add list it's safe to remove and delete it.
- ListItem* addListItem = _addList.First();
- while(addListItem)
- {
- UdpSocketPosix* addSocket = (UdpSocketPosix*)addListItem->GetItem();
+ for (SocketList::iterator iter = _addList.begin();
+ iter != _addList.end(); ++iter) {
+ UdpSocketPosix* addSocket = static_cast<UdpSocketPosix*>(*iter);
unsigned int addFD = addSocket->GetFd();
unsigned int removeFD = static_cast<UdpSocketPosix*>(s)->GetFd();
if(removeFD == addFD)
{
- _removeList.PushBack(removeFD);
+ _removeList.push_back(removeFD);
_critSectList->Leave();
return true;
}
- addListItem = _addList.Next(addListItem);
}
// Checking the socket map is safe since all Erase and Insert calls to this
// map are also protected by _critSectList.
if (_socketMap.find(static_cast<UdpSocketPosix*>(s)->GetFd()) !=
_socketMap.end()) {
- _removeList.PushBack(static_cast<UdpSocketPosix*>(s)->GetFd());
+ _removeList.push_back(static_cast<UdpSocketPosix*>(s)->GetFd());
_critSectList->Leave();
return true;
}
@@ -364,25 +362,23 @@
{
// Remove items in remove list.
_critSectList->Enter();
- while(!_removeList.Empty())
- {
+ for (FdList::iterator iter = _removeList.begin();
+ iter != _removeList.end(); ++iter) {
UdpSocketPosix* deleteSocket = NULL;
- SOCKET removeFD = _removeList.First()->GetUnsignedItem();
+ SOCKET removeFD = *iter;
// If the socket is in the add list it hasn't been added to the socket
// map yet. Just remove the socket from the add list.
- ListItem* addListItem = _addList.First();
- while(addListItem)
- {
- UdpSocketPosix* addSocket = (UdpSocketPosix*)addListItem->GetItem();
+ for (SocketList::iterator iter = _addList.begin();
+ iter != _addList.end(); ++iter) {
+ UdpSocketPosix* addSocket = static_cast<UdpSocketPosix*>(*iter);
SOCKET addFD = addSocket->GetFd();
if(removeFD == addFD)
{
deleteSocket = addSocket;
- _addList.Erase(addListItem);
+ _addList.erase(iter);
break;
}
- addListItem = _addList.Next(addListItem);
}
// Find and remove socket from _socketMap.
@@ -398,19 +394,18 @@
deleteSocket->ReadyForDeletion();
delete deleteSocket;
}
- _removeList.PopFront();
}
+ _removeList.clear();
// Add sockets from add list.
- while(!_addList.Empty())
- {
- UdpSocketPosix* s =
- static_cast<UdpSocketPosix*>(_addList.First()->GetItem());
+ for (SocketList::iterator iter = _addList.begin();
+ iter != _addList.end(); ++iter) {
+ UdpSocketPosix* s = static_cast<UdpSocketPosix*>(*iter);
if(s) {
_socketMap[s->GetFd()] = s;
}
- _addList.PopFront();
}
+ _addList.clear();
_critSectList->Leave();
}
diff --git a/test/channel_transport/udp_socket_manager_posix.h b/test/channel_transport/udp_socket_manager_posix.h
index 0efd6ff..cbcb479 100644
--- a/test/channel_transport/udp_socket_manager_posix.h
+++ b/test/channel_transport/udp_socket_manager_posix.h
@@ -14,10 +14,10 @@
#include <sys/types.h>
#include <unistd.h>
+#include <list>
#include <map>
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/system_wrappers/interface/thread_wrapper.h"
#include "webrtc/test/channel_transport/udp_socket_manager_wrapper.h"
#include "webrtc/test/channel_transport/udp_socket_wrapper.h"
@@ -74,14 +74,16 @@
void UpdateSocketMap();
private:
+ typedef std::list<UdpSocketWrapper*> SocketList;
+ typedef std::list<SOCKET> FdList;
ThreadWrapper* _thread;
CriticalSectionWrapper* _critSectList;
fd_set _readFds;
std::map<SOCKET, UdpSocketPosix*> _socketMap;
- ListWrapper _addList;
- ListWrapper _removeList;
+ SocketList _addList;
+ FdList _removeList;
};
} // namespace test