@@ -51,7 +51,7 @@ public static ValueTask<bool> ConnectAsync(this ITcpSocketClient client, string
5151 return client . ConnectAsync ( endPoint , token ) ;
5252 }
5353
54- private readonly static Dictionary < ( ITcpSocketClient Client , IDataPackageAdapter Adapter ) , List < Func < ReadOnlyMemory < byte > , ValueTask > > > _callbackCache = [ ] ;
54+ private readonly static Dictionary < ITcpSocketClient , List < ( IDataPackageAdapter Adapter , Func < ReadOnlyMemory < byte > , ValueTask > Callback ) > > _callbackCache = [ ] ;
5555
5656 /// <summary>
5757 /// 增加 <see cref="ITcpSocketClient"/> 数据适配器及其对应的回调方法
@@ -61,19 +61,19 @@ public static ValueTask<bool> ConnectAsync(this ITcpSocketClient client, string
6161 /// <param name="callback"></param>
6262 public static void AddDataPackageAdapter ( this ITcpSocketClient client , IDataPackageAdapter adapter , Func < ReadOnlyMemory < byte > , ValueTask > callback )
6363 {
64- if ( _callbackCache . TryGetValue ( ( client , adapter ) , out var list ) )
64+ if ( _callbackCache . TryGetValue ( client , out var list ) )
6565 {
66- list . Add ( cb ) ;
66+ list . Add ( ( adapter , cb ) ) ;
6767 }
6868 else
6969 {
70- _callbackCache . Add ( ( client , adapter ) , [ cb ] ) ;
70+ _callbackCache . Add ( client , [ ( adapter , cb ) ] ) ;
7171 }
7272
7373 client . ReceivedCallBack += cb ;
7474
7575 // 设置 DataPackageAdapter 的回调函数
76- adapter . ReceivedCallBack = buffer => callback ( buffer ) ;
76+ adapter . ReceivedCallBack = callback ;
7777
7878 async ValueTask cb ( ReadOnlyMemory < byte > buffer )
7979 {
@@ -86,17 +86,16 @@ async ValueTask cb(ReadOnlyMemory<byte> buffer)
8686 /// 移除 <see cref="ITcpSocketClient"/> 数据适配器及其对应的回调方法
8787 /// </summary>
8888 /// <param name="client"></param>
89- /// <param name="adapter"></param>
9089 /// <param name="callback"></param>
91- public static void RemoveDataPackageAdapter ( this ITcpSocketClient client , IDataPackageAdapter adapter , Func < ReadOnlyMemory < byte > , ValueTask > callback )
90+ public static void RemoveDataPackageAdapter ( this ITcpSocketClient client , Func < ReadOnlyMemory < byte > , ValueTask > callback )
9291 {
93- if ( _callbackCache . TryGetValue ( ( client , adapter ) , out var list ) )
92+ if ( _callbackCache . TryGetValue ( client , out var list ) )
9493 {
95- var cbs = list . Where ( i => i == callback ) . ToList ( ) ;
96- foreach ( var cb in cbs )
94+ var items = list . Where ( i => i . Adapter . ReceivedCallBack == callback ) . ToList ( ) ;
95+ foreach ( var c in items )
9796 {
98- client . ReceivedCallBack -= cb ;
99- list . Remove ( cb ) ;
97+ client . ReceivedCallBack -= c . Callback ;
98+ list . Remove ( c ) ;
10099 }
101100 }
102101 }
@@ -135,11 +134,7 @@ public static void SetDataPackageAdapter(this ITcpSocketClient client, IDataPack
135134 /// <param name="callback">回调方法</param>
136135 public static void SetDataPackageAdapter ( this ITcpSocketClient client , IDataPackageHandler handler , Func < ReadOnlyMemory < byte > , ValueTask > callback )
137136 {
138- var adapter = new DataPackageAdapter
139- {
140- DataPackageHandler = handler
141- } ;
142- client . SetDataPackageAdapter ( adapter , callback ) ;
137+ client . SetDataPackageAdapter ( new DataPackageAdapter ( handler ) , callback ) ;
143138 }
144139
145140 /// <summary>
@@ -235,11 +230,7 @@ public static void SetDataPackageAdapter<TEntity>(this ITcpSocketClient client,
235230 /// <param name="callback">回调方法</param>
236231 public static void SetDataPackageAdapter < TEntity > ( this ITcpSocketClient client , IDataPackageHandler handler , Func < TEntity ? , Task > callback )
237232 {
238- var adapter = new DataPackageAdapter
239- {
240- DataPackageHandler = handler
241- } ;
242- client . SetDataPackageAdapter ( adapter , callback ) ;
233+ client . SetDataPackageAdapter ( new DataPackageAdapter ( handler ) , callback ) ;
243234 }
244235
245236 private static void SetDataAdapterCallback < TEntity > ( this IDataPackageAdapter adapter , IDataConverter < TEntity > converter , Func < TEntity ? , Task > callback )
0 commit comments