@@ -800,6 +800,48 @@ public async Task TryGetTypeConverter_Ok()
800800 server . Stop ( ) ;
801801 }
802802
803+ [ Fact ]
804+ public async Task AddDataPackageAdapter_Ok ( )
805+ {
806+ var port = 8896 ;
807+ var server = StartTcpServer ( port , MockSplitPackageAsync ) ;
808+
809+ var client = CreateClient ( ) ;
810+ var tcs = new TaskCompletionSource ( ) ;
811+ var receivedBuffer = new byte [ 128 ] ;
812+ var receivedBuffer2 = new byte [ 128 ] ;
813+
814+ // 连接 TCP Server
815+ var connect = await client . ConnectAsync ( "localhost" , port ) ;
816+
817+ client . AddDataPackageAdapter ( new DataPackageAdapter ( new FixLengthDataPackageHandler ( 7 ) ) , ReceivedCallBack ) ;
818+ client . AddDataPackageAdapter ( new DataPackageAdapter ( new FixLengthDataPackageHandler ( 7 ) ) , ReceivedCallBack2 ) ;
819+
820+ var data = new ReadOnlyMemory < byte > ( [ 1 , 2 , 3 , 4 , 5 ] ) ;
821+ await client . SendAsync ( data ) ;
822+
823+ // 等待接收数据处理完成
824+ await tcs . Task ;
825+ client . RemoveDataPackageAdapter ( ReceivedCallBack ) ;
826+ client . RemoveDataPackageAdapter ( ReceivedCallBack2 ) ;
827+
828+ ValueTask ReceivedCallBack ( ReadOnlyMemory < byte > buffer )
829+ {
830+ // buffer 即是接收到的数据
831+ buffer . CopyTo ( receivedBuffer ) ;
832+ receivedBuffer = receivedBuffer [ ..buffer . Length ] ;
833+ tcs . SetResult ( ) ;
834+ return ValueTask . CompletedTask ;
835+ }
836+
837+ ValueTask ReceivedCallBack2 ( ReadOnlyMemory < byte > buffer )
838+ {
839+ // buffer 即是接收到的数据
840+ buffer . CopyTo ( receivedBuffer2 ) ;
841+ receivedBuffer2 = receivedBuffer2 [ ..buffer . Length ] ;
842+ return ValueTask . CompletedTask ;
843+ }
844+ }
803845 private static TcpListener StartTcpServer ( int port , Func < TcpClient , Task > handler )
804846 {
805847 var server = new TcpListener ( IPAddress . Loopback , port ) ;
0 commit comments