Skip to content

Commit 5f25ebf

Browse files
committed
Switch from local functions to instance.
A static local function (to prevent capture) would be preferable, but the inability to reference instance data was prohibitive.
1 parent 3467f6f commit 5f25ebf

File tree

1 file changed

+48
-48
lines changed

1 file changed

+48
-48
lines changed

src/MySqlConnector/Protocol/Serialization/SocketByteHandler.cs

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -25,64 +25,64 @@ public ValueTask<int> ReadBytesAsync(ArraySegment<byte> buffer, IOBehavior ioBeh
2525
{
2626
return ioBehavior == IOBehavior.Asynchronous ?
2727
new ValueTask<int>(DoReadBytesAsync(buffer)) : DoReadBytesSync(buffer);
28+
}
2829

29-
ValueTask<int> DoReadBytesSync(ArraySegment<byte> buffer_)
30+
private ValueTask<int> DoReadBytesSync(ArraySegment<byte> buffer)
31+
{
32+
try
3033
{
31-
try
32-
{
33-
if (RemainingTimeout == Constants.InfiniteTimeout)
34-
return new ValueTask<int>(m_socket.Receive(buffer_.Array, buffer_.Offset, buffer_.Count, SocketFlags.None));
34+
if (RemainingTimeout == Constants.InfiniteTimeout)
35+
return new ValueTask<int>(m_socket.Receive(buffer.Array, buffer.Offset, buffer.Count, SocketFlags.None));
3536

36-
while (RemainingTimeout > 0)
37+
while (RemainingTimeout > 0)
38+
{
39+
var startTime = Environment.TickCount;
40+
if (m_socket.Poll(Math.Min(int.MaxValue / 1000, RemainingTimeout) * 1000, SelectMode.SelectRead))
3741
{
38-
var startTime = Environment.TickCount;
39-
if (m_socket.Poll(Math.Min(int.MaxValue / 1000, RemainingTimeout) * 1000, SelectMode.SelectRead))
40-
{
41-
var bytesRead = m_socket.Receive(buffer_.Array, buffer_.Offset, buffer_.Count, SocketFlags.None);
42-
RemainingTimeout -= unchecked(Environment.TickCount - startTime);
43-
return new ValueTask<int>(bytesRead);
44-
}
42+
var bytesRead = m_socket.Receive(buffer.Array, buffer.Offset, buffer.Count, SocketFlags.None);
4543
RemainingTimeout -= unchecked(Environment.TickCount - startTime);
44+
return new ValueTask<int>(bytesRead);
4645
}
47-
return ValueTaskExtensions.FromException<int>(MySqlException.CreateForTimeout());
48-
}
49-
catch (Exception ex)
50-
{
51-
return ValueTaskExtensions.FromException<int>(ex);
46+
RemainingTimeout -= unchecked(Environment.TickCount - startTime);
5247
}
48+
return ValueTaskExtensions.FromException<int>(MySqlException.CreateForTimeout());
5349
}
50+
catch (Exception ex)
51+
{
52+
return ValueTaskExtensions.FromException<int>(ex);
53+
}
54+
}
5455

55-
async Task<int> DoReadBytesAsync(ArraySegment<byte> buffer_)
56+
private async Task<int> DoReadBytesAsync(ArraySegment<byte> buffer)
57+
{
58+
var startTime = RemainingTimeout == Constants.InfiniteTimeout ? 0 : Environment.TickCount;
59+
var timerId = RemainingTimeout == Constants.InfiniteTimeout ? 0 :
60+
RemainingTimeout <= 0 ? throw MySqlException.CreateForTimeout() :
61+
TimerQueue.Instance.Add(RemainingTimeout, m_closeSocket);
62+
m_socketAwaitable.EventArgs.SetBuffer(buffer.Array, buffer.Offset, buffer.Count);
63+
int bytesRead;
64+
try
65+
{
66+
await m_socket.ReceiveAsync(m_socketAwaitable);
67+
bytesRead = m_socketAwaitable.EventArgs.BytesTransferred;
68+
}
69+
catch (SocketException ex)
5670
{
57-
var startTime = RemainingTimeout == Constants.InfiniteTimeout ? 0 : Environment.TickCount;
58-
var timerId = RemainingTimeout == Constants.InfiniteTimeout ? 0 :
59-
RemainingTimeout <= 0 ? throw MySqlException.CreateForTimeout() :
60-
TimerQueue.Instance.Add(RemainingTimeout, m_closeSocket);
61-
m_socketAwaitable.EventArgs.SetBuffer(buffer_.Array, buffer_.Offset, buffer_.Count);
62-
int bytesRead;
63-
try
64-
{
65-
await m_socket.ReceiveAsync(m_socketAwaitable);
66-
bytesRead = m_socketAwaitable.EventArgs.BytesTransferred;
67-
}
68-
catch (SocketException ex)
69-
{
70-
if (RemainingTimeout != Constants.InfiniteTimeout)
71-
{
72-
RemainingTimeout -= unchecked(Environment.TickCount - startTime);
73-
if (!TimerQueue.Instance.Remove(timerId))
74-
throw MySqlException.CreateForTimeout(ex);
75-
}
76-
throw;
77-
}
7871
if (RemainingTimeout != Constants.InfiniteTimeout)
7972
{
8073
RemainingTimeout -= unchecked(Environment.TickCount - startTime);
8174
if (!TimerQueue.Instance.Remove(timerId))
82-
throw MySqlException.CreateForTimeout();
75+
throw MySqlException.CreateForTimeout(ex);
8376
}
84-
return bytesRead;
77+
throw;
78+
}
79+
if (RemainingTimeout != Constants.InfiniteTimeout)
80+
{
81+
RemainingTimeout -= unchecked(Environment.TickCount - startTime);
82+
if (!TimerQueue.Instance.Remove(timerId))
83+
throw MySqlException.CreateForTimeout();
8584
}
85+
return bytesRead;
8686
}
8787

8888
public ValueTask<int> WriteBytesAsync(ArraySegment<byte> data, IOBehavior ioBehavior)
@@ -99,13 +99,13 @@ public ValueTask<int> WriteBytesAsync(ArraySegment<byte> data, IOBehavior ioBeha
9999
{
100100
return ValueTaskExtensions.FromException<int>(ex);
101101
}
102+
}
102103

103-
async Task<int> DoWriteBytesAsync(ArraySegment<byte> data_)
104-
{
105-
m_socketAwaitable.EventArgs.SetBuffer(data_.Array, data_.Offset, data_.Count);
106-
await m_socket.SendAsync(m_socketAwaitable);
107-
return 0;
108-
}
104+
private async Task<int> DoWriteBytesAsync(ArraySegment<byte> data)
105+
{
106+
m_socketAwaitable.EventArgs.SetBuffer(data.Array, data.Offset, data.Count);
107+
await m_socket.SendAsync(m_socketAwaitable);
108+
return 0;
109109
}
110110

111111
readonly Socket m_socket;

0 commit comments

Comments
 (0)