Files
Ayay/SHH.CameraSdk/Core/Pipeline/GlobalPipelineRouter.cs

36 lines
1.2 KiB
C#

namespace SHH.CameraSdk;
/// <summary>
/// [改道分发中心] 全局管道路由器
/// 职责:驱动层只管把数据扔到这里,不用关心后面是缩放、增强还是直接分发。
/// </summary>
public static class GlobalPipelineRouter
{
// 当前激活的处理器 (默认可为空,为空则直接透传)
private static IFrameProcessor? _currentProcessor;
/// <summary>
/// 配置具体的处理策略 (在 Program.cs 中初始化)
/// </summary>
public static void SetProcessor(IFrameProcessor processor)
{
_currentProcessor = processor;
}
/// <summary>
/// [驱动层入口] 提交帧数据
/// </summary>
public static void Enqueue(long deviceId, SmartFrame frame, FrameDecision decision)
{
if (_currentProcessor != null)
{
// 场景 A: 有处理器 (如缩放服务) -> 改道进入处理器
_currentProcessor.Enqueue(deviceId, frame, decision);
}
else
{
// 场景 B: 无处理器 -> 直接进入全局分发中心 (回退到原始逻辑)
GlobalProcessingCenter.Submit(deviceId, frame, decision);
}
}
}