aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorAn-Zheng <62806056+An-Zheng@users.noreply.github.com>2025-08-27 13:09:34 -0400
committerGitHub <noreply@github.com>2025-08-27 19:09:34 +0200
commit7c7873b73b9e3c14fc7ad5d8d7f2e90e4f0f4e06 (patch)
treec3e0154d9317a19bd146abeee04464e32e0263c3 /src/common
parent480adfce110b39aa84e5b544972ab995c7cf5b41 (diff)
Core/Network: Refactor duplicate code in Socket (#30970)
Diffstat (limited to 'src/common')
-rw-r--r--src/common/network/Socket.h23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/common/network/Socket.h b/src/common/network/Socket.h
index b7542c9c70d..aa42c7299e8 100644
--- a/src/common/network/Socket.h
+++ b/src/common/network/Socket.h
@@ -279,6 +279,13 @@ private:
return IsOpen();
}
+ void QueuedBufferWriteDone()
+ {
+ _writeQueue.pop();
+ if (_openState == OpenState_Closing && _writeQueue.empty())
+ CloseSocket();
+ }
+
#ifdef TC_SOCKET_USE_IOCP
void WriteHandler(boost::system::error_code const& error, std::size_t transferedBytes)
@@ -288,12 +295,10 @@ private:
_isWritingAsync = false;
_writeQueue.front().ReadCompleted(transferedBytes);
if (!_writeQueue.front().GetActiveSize())
- _writeQueue.pop();
+ QueuedBufferWriteDone();
if (!_writeQueue.empty())
AsyncProcessQueue();
- else if (_openState == OpenState_Closing)
- CloseSocket();
}
else
CloseSocket();
@@ -324,16 +329,12 @@ private:
if (error == boost::asio::error::would_block || error == boost::asio::error::try_again)
return AsyncProcessQueue();
- _writeQueue.pop();
- if (_openState == OpenState_Closing && _writeQueue.empty())
- CloseSocket();
+ QueuedBufferWriteDone();
return false;
}
else if (bytesSent == 0)
{
- _writeQueue.pop();
- if (_openState == OpenState_Closing && _writeQueue.empty())
- CloseSocket();
+ QueuedBufferWriteDone();
return false;
}
else if (bytesSent < bytesToSend) // now n > 0
@@ -342,9 +343,7 @@ private:
return AsyncProcessQueue();
}
- _writeQueue.pop();
- if (_openState == OpenState_Closing && _writeQueue.empty())
- CloseSocket();
+ QueuedBufferWriteDone();
return !_writeQueue.empty();
}