summaryrefslogtreecommitdiffhomepage
path: root/NetEx/NetLink.cpp
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2022-03-27 22:11:07 +0200
committerAki <please@ignore.pl>2022-03-27 22:11:07 +0200
commit1cf689a6ad9d6c5cd29e11a6a96cb075eb2bbbb8 (patch)
tree3b31cdfcefe051a9a31972703b4d738812467abf /NetEx/NetLink.cpp
parent2ba515370864b85bd29b0d23083248c74a868691 (diff)
downloadstarshatter-1cf689a6ad9d6c5cd29e11a6a96cb075eb2bbbb8.zip
starshatter-1cf689a6ad9d6c5cd29e11a6a96cb075eb2bbbb8.tar.gz
starshatter-1cf689a6ad9d6c5cd29e11a6a96cb075eb2bbbb8.tar.bz2
Replaced ThreadSync with stl's mutex
Diffstat (limited to 'NetEx/NetLink.cpp')
-rw-r--r--NetEx/NetLink.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/NetEx/NetLink.cpp b/NetEx/NetLink.cpp
index bbba59b..10e817a 100644
--- a/NetEx/NetLink.cpp
+++ b/NetEx/NetLink.cpp
@@ -87,9 +87,8 @@ NetLink::AddPeer(const NetAddr& a)
if (!a.IPAddr())
return 0;
- AutoThreadSync auto_sync(sync);
-
NetPeer* peer = FindPeer(a);
+ const std::lock_guard<std::mutex> lock(sync);
if (!peer) {
peer = new NetPeer(a, base_netid++);
@@ -149,9 +148,9 @@ NetLink::GetMessage(DWORD netid)
if (p) {
msg = p->GetMessage();
- sync.acquire();
+ sync.lock();
recv_list.remove(msg);
- sync.release();
+ sync.unlock();
}
}
@@ -169,11 +168,11 @@ NetLink::GetMessage()
// Double-checked locking:
if (recv_list.size()) {
- sync.acquire();
+ sync.lock();
if (recv_list.size()) {
msg = recv_list.removeIndex(0);
}
- sync.release();
+ sync.unlock();
if (msg && msg->NetID()) {
NetPeer* p = FindPeer(msg->NetID());
@@ -216,7 +215,7 @@ NetLink::DoSendRecv()
SendPackets();
// discard reeeeally old peers:
- sync.acquire();
+ sync.lock();
ListIter<NetPeer> iter = peer_list;
while (!shutdown && ++iter) {
@@ -226,7 +225,7 @@ NetLink::DoSendRecv()
delete iter.removeItem();
}
- sync.release();
+ sync.unlock();
Sleep(traffic_time);
}
@@ -265,7 +264,7 @@ NetLink::SendPackets()
DoRetries();
}
- AutoThreadSync auto_sync(sync);
+ const std::lock_guard<std::mutex> lock(sync);
ListIter<NetPeer> iter = peer_list;
while (!shutdown && ++iter) {
@@ -345,7 +344,7 @@ void
NetLink::ProcessAck(NetGram* gram)
{
if (!shutdown && send_list.size()) {
- AutoThreadSync auto_sync(sync);
+ sync.lock();
// remove the ack flag:
gram->ClearAck();
@@ -361,7 +360,9 @@ NetLink::ProcessAck(NetGram* gram)
if (lag_index >= 10) lag_index = 0;
lag_samples[lag_index++] = msec;
+ sync.unlock();
NetPeer* peer = FindPeer(orig->Address());
+ sync.lock();
if (peer)
peer->SetLastReceiveTime(NetLayer::GetUTC());
@@ -374,6 +375,7 @@ NetLink::ProcessAck(NetGram* gram)
else
resend_time = 300;
}
+ sync.unlock();
}
}
@@ -381,10 +383,9 @@ void
NetLink::QueueNetGram(NetGram* gram)
{
if (!shutdown) {
- AutoThreadSync auto_sync(sync);
-
DWORD sequence = 0;
NetPeer* peer = FindPeer(gram->Address());
+ const std::lock_guard<std::mutex> lock(sync);
if (peer) {
sequence = peer->Sequence();
@@ -415,7 +416,7 @@ void
NetLink::DoRetries()
{
if (!shutdown) {
- AutoThreadSync auto_sync(sync);
+ const std::lock_guard<std::mutex> lock(sync);
if (send_list.size()) {
int time = (int) NetLayer::GetTime();
@@ -452,7 +453,7 @@ NetLink::DoRetries()
NetPeer*
NetLink::FindPeer(DWORD netid)
{
- AutoThreadSync auto_sync(sync);
+ const std::lock_guard<std::mutex> lock(sync);
NetPeer* peer = 0;
ListIter<NetPeer> iter = peer_list;
@@ -469,7 +470,7 @@ NetLink::FindPeer(DWORD netid)
NetPeer*
NetLink::FindPeer(const NetAddr& a)
{
- AutoThreadSync auto_sync(sync);
+ const std::lock_guard<std::mutex> lock(sync);
NetPeer* peer = 0;
ListIter<NetPeer> iter = peer_list;