using System; using System.Threading.Tasks; using JiShe.CollectBus.Protocol.Contracts.Interfaces; using JiShe.CollectBus.Protocol.Contracts.Models; using Microsoft.Extensions.Caching.Distributed; using TouchSocket.Sockets; namespace JiShe.CollectBus.Protocol.Contracts.Abstracts { public abstract class BaseProtocolPlugin(IDistributedCache cache) : IProtocolPlugin { public abstract Task GetAsync(); public virtual Task ReceivedAsync(ITcpSessionClient client, ReceivedDataEventArgs e) { return Task.CompletedTask; } public virtual Task SendAsync() { return Task.CompletedTask; } public virtual async Task LoadAsync() { var result = cache.GetString("myKey"); if (result == null) { result = "Calculated Data"; cache.SetString("myKey", result, new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10) }); } await Task.CompletedTask; } } }