namespace SHH.CameraService; public class InterceptorPipeline { private readonly IEnumerable _interceptors; // 通过依赖注入获取所有注册的拦截器 public InterceptorPipeline(IEnumerable interceptors) { _interceptors = interceptors; } /// /// 执行发送管道 /// /// 返回处理后的上下文,如果被拦截则返回 null public async Task ExecuteSendAsync(string protocol, byte[] data) { var context = new ProtocolContext(protocol, data); foreach (var interceptor in _interceptors) { await interceptor.OnSendingAsync(context); if (context.IsBlocked) return null; // 被拦截,终止发送 } return context; } /// /// 执行接收管道 /// public async Task ExecuteReceiveAsync(string protocol, byte[] data) { var context = new ProtocolContext(protocol, data); foreach (var interceptor in _interceptors) { await interceptor.OnReceivedAsync(context); if (context.IsBlocked) return null; // 被拦截,丢弃消息 } return context; } }