-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathTCP_ConnectingManager.cpp
More file actions
62 lines (51 loc) · 1.15 KB
/
TCP_ConnectingManager.cpp
File metadata and controls
62 lines (51 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "TCP_ConnectingManager.h"
#include "util.h"
TcpConnectingManager::TcpConnectingManager():m_timeout(300)
{
}
TcpConnectingManager::~TcpConnectingManager()
{
}
void TcpConnectingManager::setTimeoutSeconds(unsigned int timeSeconds)
{
m_timeout = timeSeconds;
}
void TcpConnectingManager::updateTimeInfo(unsigned int id, unsigned long time)
{
std::lock_guard<std::mutex> guard(m_mutex);
//m_mapTimeInfo.find(timeInfo)
auto it = m_mapTimeInfo.find(id);
if (it==m_mapTimeInfo.end())
{
m_mapTimeInfo.insert(std::pair<unsigned int, unsigned int>(id, time));
it = m_mapTimeInfo.find(id);
}
(*it).second = time;
}
void TcpConnectingManager::deleteSocket(unsigned int id)
{
auto iterator = m_mapTimeInfo.find(id);
if (iterator!=m_mapTimeInfo.end())
{
m_mapTimeInfo.erase(id);
}
}
std::vector<unsigned> TcpConnectingManager::getTimeoutSockets()
{
std::lock_guard<std::mutex> guard(m_mutex);
std::vector<unsigned int> vecOut;
timeval time;
gettimeofday(&time, nullptr);
for (auto i:m_mapTimeInfo)
{
if (time.tv_sec-i.second>m_timeout)
{
vecOut.push_back(i.first);
}
}
for (auto i:vecOut )
{
m_mapTimeInfo.erase(i);
}
return vecOut;
}