Skip to content

Commit 797298f

Browse files
committed
refactor: 增加 SetDataPackageAdapter 方法
1 parent 3d16438 commit 797298f

1 file changed

Lines changed: 17 additions & 5 deletions

File tree

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

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,11 @@ public static void SetDataPackageAdapter(this ITcpSocketClient client, IDataPack
118118
// 释放缓存
119119
if (_cache.TryGetValue(client, out var list))
120120
{
121-
var items = list.Where(i => i.Callback == callback).ToList();
122-
foreach (var item in items)
121+
foreach (var (Adapter, Callback) in list)
123122
{
124-
client.ReceivedCallBack -= item.Callback;
125-
list.Remove(item);
123+
client.ReceivedCallBack -= Callback;
126124
}
125+
list.Clear();
127126
}
128127

129128
// 设置 ITcpSocketClient 的回调函数
@@ -134,7 +133,7 @@ public static void SetDataPackageAdapter(this ITcpSocketClient client, IDataPack
134133
};
135134

136135
// 设置 DataPackageAdapter 的回调函数
137-
adapter.ReceivedCallBack = buffer => callback(buffer);
136+
adapter.ReceivedCallBack = callback;
138137
}
139138

140139
/// <summary>
@@ -191,6 +190,19 @@ public static void SetDataPackageAdapter<TEntity>(this ITcpSocketClient client,
191190
};
192191
}
193192

193+
/// <summary>
194+
/// 通过指定 <see cref="IDataPackageHandler"/> 数据处理实例,设置数据适配器并配置回调方法
195+
/// </summary>
196+
/// <typeparam name="TEntity"></typeparam>
197+
/// <param name="client"></param>
198+
/// <param name="handler"></param>
199+
/// <param name="socketDataConverter"></param>
200+
/// <param name="callback"></param>
201+
public static void SetDataPackageAdapter<TEntity>(this ITcpSocketClient client, IDataPackageHandler handler, IDataConverter<TEntity> socketDataConverter, Func<TEntity?, Task> callback)
202+
{
203+
client.SetDataPackageAdapter(new DataPackageAdapter(handler), socketDataConverter, callback);
204+
}
205+
194206
/// <summary>
195207
/// Configures the specified <see cref="ITcpSocketClient"/> to use a custom data package adapter and callback
196208
/// function.

0 commit comments

Comments
 (0)