@@ -28,21 +28,28 @@ public ValueTask<int> ReadBytesAsync(ArraySegment<byte> buffer, IOBehavior ioBeh
28
28
29
29
ValueTask < int > DoReadBytesSync ( ArraySegment < byte > buffer_ )
30
30
{
31
- if ( RemainingTimeout == Constants . InfiniteTimeout )
32
- return new ValueTask < int > ( m_socket . Receive ( buffer_ . Array , buffer_ . Offset , buffer_ . Count , SocketFlags . None ) ) ;
33
-
34
- while ( RemainingTimeout > 0 )
31
+ try
35
32
{
36
- var startTime = Environment . TickCount ;
37
- if ( m_socket . Poll ( Math . Min ( int . MaxValue / 1000 , RemainingTimeout ) * 1000 , SelectMode . SelectRead ) )
33
+ if ( RemainingTimeout == Constants . InfiniteTimeout )
34
+ return new ValueTask < int > ( m_socket . Receive ( buffer_ . Array , buffer_ . Offset , buffer_ . Count , SocketFlags . None ) ) ;
35
+
36
+ while ( RemainingTimeout > 0 )
38
37
{
39
- var bytesRead = m_socket . Receive ( buffer_ . Array , buffer_ . Offset , buffer_ . Count , SocketFlags . None ) ;
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
+ }
40
45
RemainingTimeout -= unchecked ( Environment . TickCount - startTime ) ;
41
- return new ValueTask < int > ( bytesRead ) ;
42
46
}
43
- RemainingTimeout -= unchecked ( Environment . TickCount - startTime ) ;
47
+ return ValueTaskExtensions . FromException < int > ( MySqlException . CreateForTimeout ( ) ) ;
48
+ }
49
+ catch ( Exception ex )
50
+ {
51
+ return ValueTaskExtensions . FromException < int > ( ex ) ;
44
52
}
45
- return ValueTaskExtensions . FromException < int > ( MySqlException . CreateForTimeout ( ) ) ;
46
53
}
47
54
48
55
async Task < int > DoReadBytesAsync ( ArraySegment < byte > buffer_ )
@@ -79,13 +86,16 @@ async Task<int> DoReadBytesAsync(ArraySegment<byte> buffer_)
79
86
public ValueTask < int > WriteBytesAsync ( ArraySegment < byte > data , IOBehavior ioBehavior )
80
87
{
81
88
if ( ioBehavior == IOBehavior . Asynchronous )
82
- {
83
89
return new ValueTask < int > ( DoWriteBytesAsync ( data ) ) ;
84
- }
85
- else
90
+
91
+ try
86
92
{
87
93
m_socket . Send ( data . Array , data . Offset , data . Count , SocketFlags . None ) ;
88
- return default ( ValueTask < int > ) ;
94
+ return default ;
95
+ }
96
+ catch ( Exception ex )
97
+ {
98
+ return ValueTaskExtensions . FromException < int > ( ex ) ;
89
99
}
90
100
91
101
async Task < int > DoWriteBytesAsync ( ArraySegment < byte > data_ )
0 commit comments