Core/Network: Refactor duplicate code in Socket (#30970)

This commit is contained in:
An-Zheng
2025-08-27 13:09:34 -04:00
committed by GitHub
parent 480adfce11
commit 7c7873b73b

View File

@@ -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();
}