private void OnReceiveComplete(object sender, SocketAsyncEventArgs args)
{
// 비동기 완료 및 재진입 처리
if (args.SocketError != SocketError.Success)
{
HandleSocketError(args.SocketError);
return;
}
var len = args.BytesTransferred;
if (len == 0)
{
HandleSocketError(SocketError.Shutdown);
return;
}
// Deserialize packet
if (_receiveLargeBuffer == null)
{
if (TryDeserializeNormalPacket(len) == false)
return;
}
else
{
if (TryDeserializeLargePacket(len) == false)
return;
}
if (_issueCountFlag.Decrement())
{
ProcessClose();
return;
}
IssueReceive();
}