@@ -9,19 +9,19 @@ namespace MySql.Data.Protocol.Serialization
9
9
{
10
10
internal static class ProtocolUtility
11
11
{
12
- public static ValueTask < Packet > ReadPacketAsync ( BufferedByteReader bufferedByteReader , IByteHandler byteHandler , Func < int ? > getNextSequenceNumber , ProtocolErrorBehavior protocolErrorBehavior , IOBehavior ioBehavior )
12
+ public static ValueTask < Packet > ReadPacketAsync ( BufferedByteReader bufferedByteReader , IByteHandler byteHandler , Func < int > getNextSequenceNumber , ProtocolErrorBehavior protocolErrorBehavior , IOBehavior ioBehavior )
13
13
{
14
14
var headerBytesTask = bufferedByteReader . ReadBytesAsync ( byteHandler , 4 , ioBehavior ) ;
15
15
if ( headerBytesTask . IsCompleted )
16
16
return ReadPacketAfterHeader ( headerBytesTask . Result , bufferedByteReader , byteHandler , getNextSequenceNumber , protocolErrorBehavior , ioBehavior ) ;
17
17
return AddContinuation ( headerBytesTask , bufferedByteReader , byteHandler , getNextSequenceNumber , protocolErrorBehavior , ioBehavior ) ;
18
18
19
19
// NOTE: use a local function (with no captures) to defer creation of lambda objects
20
- ValueTask < Packet > AddContinuation ( ValueTask < ArraySegment < byte > > headerBytes_ , BufferedByteReader bufferedByteReader_ , IByteHandler byteHandler_ , Func < int ? > getNextSequenceNumber_ , ProtocolErrorBehavior protocolErrorBehavior_ , IOBehavior ioBehavior_ ) =>
20
+ ValueTask < Packet > AddContinuation ( ValueTask < ArraySegment < byte > > headerBytes_ , BufferedByteReader bufferedByteReader_ , IByteHandler byteHandler_ , Func < int > getNextSequenceNumber_ , ProtocolErrorBehavior protocolErrorBehavior_ , IOBehavior ioBehavior_ ) =>
21
21
headerBytes_ . ContinueWith ( x => ReadPacketAfterHeader ( x , bufferedByteReader_ , byteHandler_ , getNextSequenceNumber_ , protocolErrorBehavior_ , ioBehavior_ ) ) ;
22
22
}
23
23
24
- private static ValueTask < Packet > ReadPacketAfterHeader ( ArraySegment < byte > headerBytes , BufferedByteReader bufferedByteReader , IByteHandler byteHandler , Func < int ? > getNextSequenceNumber , ProtocolErrorBehavior protocolErrorBehavior , IOBehavior ioBehavior )
24
+ private static ValueTask < Packet > ReadPacketAfterHeader ( ArraySegment < byte > headerBytes , BufferedByteReader bufferedByteReader , IByteHandler byteHandler , Func < int > getNextSequenceNumber , ProtocolErrorBehavior protocolErrorBehavior , IOBehavior ioBehavior )
25
25
{
26
26
if ( headerBytes . Count < 4 )
27
27
{
@@ -34,12 +34,12 @@ private static ValueTask<Packet> ReadPacketAfterHeader(ArraySegment<byte> header
34
34
int packetSequenceNumber = headerBytes . Array [ headerBytes . Offset + 3 ] ;
35
35
36
36
var expectedSequenceNumber = getNextSequenceNumber ( ) % 256 ;
37
- if ( expectedSequenceNumber . HasValue && packetSequenceNumber != expectedSequenceNumber . Value )
37
+ if ( expectedSequenceNumber != - 1 && packetSequenceNumber != expectedSequenceNumber )
38
38
{
39
39
if ( protocolErrorBehavior == ProtocolErrorBehavior . Ignore )
40
40
return default ( ValueTask < Packet > ) ;
41
41
42
- var exception = MySqlProtocolException . CreateForPacketOutOfOrder ( expectedSequenceNumber . Value , packetSequenceNumber ) ;
42
+ var exception = MySqlProtocolException . CreateForPacketOutOfOrder ( expectedSequenceNumber , packetSequenceNumber ) ;
43
43
return ValueTaskExtensions . FromException < Packet > ( exception ) ;
44
44
}
45
45
@@ -58,7 +58,7 @@ private static ValueTask<Packet> CreatePacketFromPayload(ArraySegment<byte> payl
58
58
protocolErrorBehavior == ProtocolErrorBehavior . Throw ? ValueTaskExtensions . FromException < Packet > ( new EndOfStreamException ( ) ) :
59
59
default ( ValueTask < Packet > ) ;
60
60
61
- public static ValueTask < ArraySegment < byte > > ReadPayloadAsync ( BufferedByteReader bufferedByteReader , IByteHandler byteHandler , Func < int ? > getNextSequenceNumber , ArraySegment < byte > previousPayloads , ProtocolErrorBehavior protocolErrorBehavior , IOBehavior ioBehavior )
61
+ public static ValueTask < ArraySegment < byte > > ReadPayloadAsync ( BufferedByteReader bufferedByteReader , IByteHandler byteHandler , Func < int > getNextSequenceNumber , ArraySegment < byte > previousPayloads , ProtocolErrorBehavior protocolErrorBehavior , IOBehavior ioBehavior )
62
62
{
63
63
var readPacketTask = ReadPacketAsync ( bufferedByteReader , byteHandler , getNextSequenceNumber , protocolErrorBehavior , ioBehavior ) ;
64
64
while ( readPacketTask . IsCompleted )
@@ -73,7 +73,7 @@ public static ValueTask<ArraySegment<byte>> ReadPayloadAsync(BufferedByteReader
73
73
return AddContinuation ( readPacketTask , bufferedByteReader , byteHandler , getNextSequenceNumber , previousPayloads , protocolErrorBehavior , ioBehavior ) ;
74
74
75
75
// NOTE: use a local function (with no captures) to defer creation of lambda objects
76
- ValueTask < ArraySegment < byte > > AddContinuation ( ValueTask < Packet > readPacketTask_ , BufferedByteReader bufferedByteReader_ , IByteHandler byteHandler_ , Func < int ? > getNextSequenceNumber_ , ArraySegment < byte > previousPayloads_ , ProtocolErrorBehavior protocolErrorBehavior_ , IOBehavior ioBehavior_ )
76
+ ValueTask < ArraySegment < byte > > AddContinuation ( ValueTask < Packet > readPacketTask_ , BufferedByteReader bufferedByteReader_ , IByteHandler byteHandler_ , Func < int > getNextSequenceNumber_ , ArraySegment < byte > previousPayloads_ , ProtocolErrorBehavior protocolErrorBehavior_ , IOBehavior ioBehavior_ )
77
77
{
78
78
return readPacketTask_ . ContinueWith ( packet =>
79
79
HasReadPayload ( ref previousPayloads_ , packet , protocolErrorBehavior_ , out var result_ ) ? result_ :
0 commit comments