@@ -874,6 +874,48 @@ ValueTask ReceivedCallBack(ReadOnlyMemory<byte> buffer)
874874 return ValueTask . CompletedTask ;
875875 }
876876 }
877+
878+ [ Fact ]
879+ public async Task SetDataPackageAdapter_Generic ( )
880+ {
881+ var port = 8898 ;
882+ var server = StartTcpServer ( port , MockSplitPackageAsync ) ;
883+
884+ var client = CreateClient ( ) ;
885+ var tcs = new TaskCompletionSource ( ) ;
886+ var receivedBuffer = new byte [ 128 ] ;
887+
888+ // 连接 TCP Server
889+ var connect = await client . ConnectAsync ( "localhost" , port ) ;
890+
891+ client . AddDataPackageAdapter ( new DataPackageAdapter ( new FixLengthDataPackageHandler ( 7 ) ) , ReceivedCallBack ) ;
892+ client . SetDataPackageAdapter < MockEntity > ( new FixLengthDataPackageHandler ( 7 ) , ReceivedEntityCallBack ) ;
893+
894+ client . AddDataPackageAdapter ( new DataPackageAdapter ( new FixLengthDataPackageHandler ( 7 ) ) , ReceivedCallBack ) ;
895+ client . SetDataPackageAdapter ( new FixLengthDataPackageHandler ( 7 ) , new MockSocketDataConverter ( ) , ReceivedEntityCallBack ) ;
896+
897+ var data = new ReadOnlyMemory < byte > ( [ 1 , 2 , 3 , 4 , 5 ] ) ;
898+ await client . SendAsync ( data ) ;
899+
900+ // 等待接收数据处理完成
901+ await tcs . Task ;
902+
903+ ValueTask ReceivedCallBack ( ReadOnlyMemory < byte > buffer )
904+ {
905+ // buffer 即是接收到的数据
906+ buffer . CopyTo ( receivedBuffer ) ;
907+ receivedBuffer = receivedBuffer [ ..buffer . Length ] ;
908+ tcs . SetResult ( ) ;
909+ return ValueTask . CompletedTask ;
910+ }
911+
912+ Task ReceivedEntityCallBack ( MockEntity ? entity )
913+ {
914+ tcs . SetResult ( ) ;
915+ return Task . CompletedTask ;
916+ }
917+ }
918+
877919 private static TcpListener StartTcpServer ( int port , Func < TcpClient , Task > handler )
878920 {
879921 var server = new TcpListener ( IPAddress . Loopback , port ) ;
0 commit comments