@@ -61,6 +61,12 @@ 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+ async ValueTask cb ( ReadOnlyMemory < byte > buffer )
65+ {
66+ // 将接收到的数据传递给 DataPackageAdapter 进行数据处理合规数据触发 ReceivedCallBack 回调
67+ await adapter . HandlerAsync ( buffer ) ;
68+ }
69+
6470 if ( _cache . TryGetValue ( client , out var list ) )
6571 {
6672 list . Add ( ( adapter , cb ) ) ;
@@ -74,12 +80,6 @@ public static void AddDataPackageAdapter(this ITcpSocketClient client, IDataPack
7480
7581 // 设置 DataPackageAdapter 的回调函数
7682 adapter . ReceivedCallBack = callback ;
77-
78- async ValueTask cb ( ReadOnlyMemory < byte > buffer )
79- {
80- // 将接收到的数据传递给 DataPackageAdapter 进行数据处理合规数据触发 ReceivedCallBack 回调
81- await adapter . HandlerAsync ( buffer ) ;
82- }
8383 }
8484
8585 /// <summary>
@@ -100,51 +100,15 @@ public static void RemoveDataPackageAdapter(this ITcpSocketClient client, Func<R
100100 }
101101 }
102102
103- /// <summary>
104- /// Configures the specified <see cref="ITcpSocketClient"/> to use the provided <see cref="IDataPackageAdapter"/>
105- /// for processing received data and sets a callback to handle processed data.
106- /// </summary>
107- /// <remarks>This method sets up a two-way data processing pipeline: <list type="bullet"> <item>
108- /// <description>The <paramref name="client"/> is configured to pass received data to the <paramref name="adapter"/>
109- /// for processing.</description> </item> <item> <description>The <paramref name="adapter"/> is configured to invoke
110- /// the provided <paramref name="callback"/> with the processed data.</description> </item> </list> Use this method
111- /// to integrate a custom data processing adapter with a TCP socket client.</remarks>
112- /// <param name="client">The <see cref="ITcpSocketClient"/> instance to configure.</param>
113- /// <param name="adapter">The <see cref="IDataPackageAdapter"/> used to process incoming data.</param>
114- /// <param name="callback">A callback function invoked with the processed data. The function receives a <see cref="ReadOnlyMemory{T}"/>
115- /// containing the processed data and returns a <see cref="ValueTask"/>.</param>
116- public static void SetDataPackageAdapter ( this ITcpSocketClient client , IDataPackageAdapter adapter , Func < ReadOnlyMemory < byte > , ValueTask > callback )
117- {
118- // 释放缓存
119- if ( _cache . TryGetValue ( client , out var list ) )
120- {
121- foreach ( var ( Adapter , Callback ) in list )
122- {
123- client . ReceivedCallBack -= Callback ;
124- }
125- list . Clear ( ) ;
126- }
127-
128- // 设置 ITcpSocketClient 的回调函数
129- client . ReceivedCallBack = async buffer =>
130- {
131- // 将接收到的数据传递给 DataPackageAdapter 进行数据处理合规数据触发 ReceivedCallBack 回调
132- await adapter . HandlerAsync ( buffer ) ;
133- } ;
134-
135- // 设置 DataPackageAdapter 的回调函数
136- adapter . ReceivedCallBack = callback ;
137- }
138-
139103 /// <summary>
140104 /// 通过指定 <see cref="IDataPackageHandler"/> 数据处理实例,设置数据适配器并配置回调方法
141105 /// </summary>
142106 /// <param name="client"><see cref="ITcpSocketClient"/> 实例</param>
143107 /// <param name="handler"><see cref="IDataPackageHandler"/> 数据处理实例</param>
144108 /// <param name="callback">回调方法</param>
145- public static void SetDataPackageAdapter ( this ITcpSocketClient client , IDataPackageHandler handler , Func < ReadOnlyMemory < byte > , ValueTask > callback )
109+ public static void AddDataPackageAdapter ( this ITcpSocketClient client , IDataPackageHandler handler , Func < ReadOnlyMemory < byte > , ValueTask > callback )
146110 {
147- client . SetDataPackageAdapter ( new DataPackageAdapter ( handler ) , callback ) ;
111+ client . AddDataPackageAdapter ( new DataPackageAdapter ( handler ) , callback ) ;
148112 }
149113
150114 /// <summary>
@@ -159,24 +123,24 @@ public static void SetDataPackageAdapter(this ITcpSocketClient client, IDataPack
159123 /// <param name="adapter">The data package adapter responsible for handling incoming data.</param>
160124 /// <param name="socketDataConverter">The converter used to transform the received data into the specified entity type.</param>
161125 /// <param name="callback">The callback function to be invoked with the converted entity.</param>
162- public static void SetDataPackageAdapter < TEntity > ( this ITcpSocketClient client , IDataPackageAdapter adapter , IDataConverter < TEntity > socketDataConverter , Func < TEntity ? , Task > callback )
126+ public static void AddDataPackageAdapter < TEntity > ( this ITcpSocketClient client , IDataPackageAdapter adapter , IDataConverter < TEntity > socketDataConverter , Func < TEntity ? , Task > callback )
163127 {
164- // 释放缓存
165- if ( _cache . TryGetValue ( client , out var list ) )
128+ async ValueTask cb ( ReadOnlyMemory < byte > buffer )
166129 {
167- foreach ( var ( Adapter , Callback ) in list )
168- {
169- client . ReceivedCallBack -= Callback ;
170- }
171- list . Clear ( ) ;
130+ // 将接收到的数据传递给 DataPackageAdapter 进行数据处理合规数据触发 ReceivedCallBack 回调
131+ await adapter . HandlerAsync ( buffer ) ;
172132 }
173133
174- // 设置 ITcpSocketClient 的回调函数
175- client . ReceivedCallBack = async buffer =>
134+ if ( _cache . TryGetValue ( client , out var list ) )
176135 {
177- // 将接收到的数据传递给 DataPackageAdapter 进行数据处理合规数据触发 ReceivedCallBack 回调
178- await adapter . HandlerAsync ( buffer ) ;
179- } ;
136+ list . Add ( ( adapter , cb ) ) ;
137+ }
138+ else
139+ {
140+ _cache . Add ( client , [ ( adapter , cb ) ] ) ;
141+ }
142+
143+ client . ReceivedCallBack += cb ;
180144
181145 // 设置 DataPackageAdapter 的回调函数
182146 adapter . ReceivedCallBack = async buffer =>
@@ -198,9 +162,9 @@ public static void SetDataPackageAdapter<TEntity>(this ITcpSocketClient client,
198162 /// <param name="handler"></param>
199163 /// <param name="socketDataConverter"></param>
200164 /// <param name="callback"></param>
201- public static void SetDataPackageAdapter < TEntity > ( this ITcpSocketClient client , IDataPackageHandler handler , IDataConverter < TEntity > socketDataConverter , Func < TEntity ? , Task > callback )
165+ public static void AddDataPackageAdapter < TEntity > ( this ITcpSocketClient client , IDataPackageHandler handler , IDataConverter < TEntity > socketDataConverter , Func < TEntity ? , Task > callback )
202166 {
203- client . SetDataPackageAdapter ( new DataPackageAdapter ( handler ) , socketDataConverter , callback ) ;
167+ client . AddDataPackageAdapter ( new DataPackageAdapter ( handler ) , socketDataConverter , callback ) ;
204168 }
205169
206170 /// <summary>
@@ -216,24 +180,22 @@ public static void SetDataPackageAdapter<TEntity>(this ITcpSocketClient client,
216180 /// <param name="client">The TCP socket client to configure.</param>
217181 /// <param name="adapter">The data package adapter responsible for processing incoming data.</param>
218182 /// <param name="callback">The callback function to invoke with the processed entity of type <typeparamref name="TEntity"/>.</param>
219- public static void SetDataPackageAdapter < TEntity > ( this ITcpSocketClient client , IDataPackageAdapter adapter , Func < TEntity ? , Task > callback )
183+ public static void AddDataPackageAdapter < TEntity > ( this ITcpSocketClient client , IDataPackageAdapter adapter , Func < TEntity ? , Task > callback )
220184 {
221- // 释放缓存
222- if ( _cache . TryGetValue ( client , out var list ) )
185+ async ValueTask cb ( ReadOnlyMemory < byte > buffer )
223186 {
224- foreach ( var ( Adapter , Callback ) in list )
225- {
226- client . ReceivedCallBack -= Callback ;
227- }
228- list . Clear ( ) ;
187+ // 将接收到的数据传递给 DataPackageAdapter 进行数据处理合规数据触发 ReceivedCallBack 回调
188+ await adapter . HandlerAsync ( buffer ) ;
229189 }
230190
231- // 设置 ITcpSocketClient 的回调函数
232- client . ReceivedCallBack = async buffer =>
191+ if ( _cache . TryGetValue ( client , out var list ) )
233192 {
234- // 将接收到的数据传递给 DataPackageAdapter 进行数据处理合规数据触发 ReceivedCallBack 回调
235- await adapter . HandlerAsync ( buffer ) ;
236- } ;
193+ list . Add ( ( adapter , cb ) ) ;
194+ }
195+ else
196+ {
197+ _cache . Add ( client , [ ( adapter , cb ) ] ) ;
198+ }
237199
238200 IDataConverter < TEntity > ? converter = null ;
239201
@@ -268,9 +230,9 @@ public static void SetDataPackageAdapter<TEntity>(this ITcpSocketClient client,
268230 /// <param name="client"><see cref="ITcpSocketClient"/> 实例</param>
269231 /// <param name="handler"><see cref="IDataPackageHandler"/> 数据处理实例</param>
270232 /// <param name="callback">回调方法</param>
271- public static void SetDataPackageAdapter < TEntity > ( this ITcpSocketClient client , IDataPackageHandler handler , Func < TEntity ? , Task > callback )
233+ public static void AddDataPackageAdapter < TEntity > ( this ITcpSocketClient client , IDataPackageHandler handler , Func < TEntity ? , Task > callback )
272234 {
273- client . SetDataPackageAdapter ( new DataPackageAdapter ( handler ) , callback ) ;
235+ client . AddDataPackageAdapter ( new DataPackageAdapter ( handler ) , callback ) ;
274236 }
275237
276238 private static void SetDataAdapterCallback < TEntity > ( this IDataPackageAdapter adapter , IDataConverter < TEntity > converter , Func < TEntity ? , Task > callback )
0 commit comments