Files
ThingsGateway/src/ThingsGateway.Admin.Application/Services/SignalrNoticeService/EventService.cs
Diego e49507cd14 release:6.0.4.38
refactor: 支持blazor hybrid;
feat(s7): 支持多写;
2024-07-30 19:44:47 +08:00

35 lines
778 B
C#

using BootstrapBlazor.Components;
namespace ThingsGateway.Admin.Application;
public interface IEventService<TEntry>
{
Task Publish(string key, TEntry payload);
void Subscribe(string key, Func<TEntry, Task> callback);
void UnSubscribe(string key);
}
public class EventService<TEntry> : IEventService<TEntry>
{
private Dictionary<string, Func<TEntry, Task>> Cache { get; } = new(50);
public async Task Publish(string key, TEntry payload)
{
if (Cache.TryGetValue(key, out var func))
{
await func(payload);
}
}
public void Subscribe(string key, Func<TEntry, Task> callback)
{
Cache.TryAdd(key, callback);
}
public void UnSubscribe(string key)
{
Cache.Remove(key);
}
}