Skip to content

Commit 794cdde

Browse files
committed
refactor: 移除 Set 方法
1 parent 6f8d8aa commit 794cdde

1 file changed

Lines changed: 36 additions & 74 deletions

File tree

src/extensions/BootstrapBlazor.TcpSocket/Extensions/ITcpSocketClientExtensions.cs

Lines changed: 36 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)