@@ -75,10 +75,31 @@ private async ValueTask<int> DoReadBytesAsync(ArraySegment<byte> buffer)
75
75
var timerId = RemainingTimeout == Constants . InfiniteTimeout ? 0 :
76
76
RemainingTimeout <= 0 ? throw MySqlException . CreateForTimeout ( ) :
77
77
TimerQueue . Instance . Add ( RemainingTimeout , m_closeSocket ) ;
78
+ #if VALUETASKSOURCE
79
+ m_socketEventArgs . SetBuffer ( buffer . Array , buffer . Offset , buffer . Count ) ;
80
+ #else
81
+ m_socketAwaitable . EventArgs . SetBuffer ( buffer . Array , buffer . Offset , buffer . Count ) ;
82
+ #endif
78
83
int bytesRead ;
79
84
try
80
85
{
81
- bytesRead = await ReadBytesFromSocketAsync ( buffer ) . ConfigureAwait ( false ) ;
86
+ #if VALUETASKSOURCE
87
+ m_valueTaskSource . Reset ( ) ;
88
+ if ( ! m_socket . ReceiveAsync ( m_socketEventArgs ) )
89
+ {
90
+ if ( m_socketEventArgs . SocketError != SocketError . Success )
91
+ throw new SocketException ( ( int ) m_socketEventArgs . SocketError ) ;
92
+ else
93
+ bytesRead = m_socketEventArgs . BytesTransferred ;
94
+ }
95
+ else
96
+ {
97
+ bytesRead = await new ValueTask < int > ( this , m_valueTaskSource . Version ) . ConfigureAwait ( false ) ;
98
+ }
99
+ #else
100
+ await m_socket . ReceiveAsync ( m_socketAwaitable ) ;
101
+ bytesRead = m_socketAwaitable . EventArgs . BytesTransferred ;
102
+ #endif
82
103
}
83
104
catch ( SocketException ex )
84
105
{
@@ -102,7 +123,7 @@ private async ValueTask<int> DoReadBytesAsync(ArraySegment<byte> buffer)
102
123
public ValueTask < int > WriteBytesAsync ( ArraySegment < byte > data , IOBehavior ioBehavior )
103
124
{
104
125
if ( ioBehavior == IOBehavior . Asynchronous )
105
- return WriteBytesToSocketAsync ( data ) ;
126
+ return DoWriteBytesAsync ( data ) ;
106
127
107
128
try
108
129
{
@@ -116,16 +137,7 @@ public ValueTask<int> WriteBytesAsync(ArraySegment<byte> data, IOBehavior ioBeha
116
137
}
117
138
118
139
#if VALUETASKSOURCE
119
- private ValueTask < int > ReadBytesFromSocketAsync ( ArraySegment < byte > buffer )
120
- {
121
- m_socketEventArgs . SetBuffer ( buffer . Array , buffer . Offset , buffer . Count ) ;
122
- m_valueTaskSource . Reset ( ) ;
123
- if ( ! m_socket . ReceiveAsync ( m_socketEventArgs ) )
124
- PropagateSocketAsyncEventArgsStatus ( ) ;
125
- return new ValueTask < int > ( this , m_valueTaskSource . Version ) ;
126
- }
127
-
128
- private ValueTask < int > WriteBytesToSocketAsync ( ArraySegment < byte > data )
140
+ private ValueTask < int > DoWriteBytesAsync ( ArraySegment < byte > data )
129
141
{
130
142
m_socketEventArgs . SetBuffer ( data . Array , data . Offset , data . Count ) ;
131
143
m_valueTaskSource . Reset ( ) ;
@@ -134,14 +146,7 @@ private ValueTask<int> WriteBytesToSocketAsync(ArraySegment<byte> data)
134
146
return new ValueTask < int > ( this , m_valueTaskSource . Version ) ;
135
147
}
136
148
#else
137
- private async ValueTask < int > ReadBytesFromSocketAsync ( ArraySegment < byte > buffer )
138
- {
139
- m_socketAwaitable . EventArgs . SetBuffer ( buffer . Array , buffer . Offset , buffer . Count ) ;
140
- await m_socket . ReceiveAsync ( m_socketAwaitable ) ;
141
- return m_socketAwaitable . EventArgs . BytesTransferred ;
142
- }
143
-
144
- private async ValueTask < int > WriteBytesToSocketAsync ( ArraySegment < byte > data )
149
+ private async ValueTask < int > DoWriteBytesAsync ( ArraySegment < byte > data )
145
150
{
146
151
m_socketAwaitable . EventArgs . SetBuffer ( data . Array , data . Offset , data . Count ) ;
147
152
await m_socket . SendAsync ( m_socketAwaitable ) ;
0 commit comments