规范并补充日志内容
This commit is contained in:
@@ -22,46 +22,42 @@ namespace SHH.CameraSdk
|
||||
services.AddSingleton<ProcessingConfigManager>();
|
||||
|
||||
// =============================================================
|
||||
// 2. 图像处理流水线编排 (Pipeline)
|
||||
// 2. 图像处理流水线编排 (Pipeline) - 修复版
|
||||
// =============================================================
|
||||
// 这里我们利用 Factory 模式在注册时完成链条组装,保持了你原有的逻辑
|
||||
|
||||
// 1. 先注册下游节点 (Enhance)
|
||||
// 这样整个系统(包括 Controller 和 Scale)都共享这唯一的一个实例
|
||||
services.AddSingleton<ImageEnhanceCluster>(sp =>
|
||||
{
|
||||
var configMgr = sp.GetRequiredService<ProcessingConfigManager>();
|
||||
return new ImageEnhanceCluster(4, configMgr);
|
||||
});
|
||||
|
||||
// 2. 再注册上游节点 (Scale) 并完成组装
|
||||
services.AddSingleton<ImageScaleCluster>(sp =>
|
||||
{
|
||||
var configMgr = sp.GetRequiredService<ProcessingConfigManager>();
|
||||
|
||||
// 手动创建实例
|
||||
// 创建 Scale 实例
|
||||
var scale = new ImageScaleCluster(4, configMgr);
|
||||
var enhance = new ImageEnhanceCluster(4, configMgr);
|
||||
|
||||
// ★ 编排流水线:缩放 -> 增亮
|
||||
// ★ 关键修复:从容器中获取已经在上面注册好的 Enhance 实例
|
||||
// 而不是 new 一个新的
|
||||
var enhance = sp.GetRequiredService<ImageEnhanceCluster>();
|
||||
|
||||
// ★ 编排流水线:缩放 -> 增亮 (现在引用的是同一个对象了)
|
||||
scale.SetNext(enhance);
|
||||
|
||||
// ★ 全局路由挂载 (兼容旧驱动层)
|
||||
// ★ 全局路由挂载
|
||||
GlobalPipelineRouter.SetProcessor(scale);
|
||||
|
||||
return scale;
|
||||
});
|
||||
|
||||
// 注册 EnhanceCluster,以防 Controller 单独请求它
|
||||
// 注意:这里我们通过从 Scale 中获取 Next 来保证是同一个实例链条
|
||||
services.AddSingleton<ImageEnhanceCluster>(sp =>
|
||||
{
|
||||
var scale = sp.GetRequiredService<ImageScaleCluster>();
|
||||
// 这里假设链条没变,或者你可以重新 new 一个,但为了保持引用一致性,
|
||||
// 建议尽量通过主入口访问,或者在这里重新创建独立的(取决于业务需求)。
|
||||
// 按照你之前的逻辑,这里为了简单,我们重新注册一个新的或沿用上一个逻辑。
|
||||
// *最佳实践*:如果 enhancing 是依附于 scaling 的,通常只注册 Head。
|
||||
// 但为了兼容你原代码的 DI 注册:
|
||||
return new ImageEnhanceCluster(4, sp.GetRequiredService<ProcessingConfigManager>());
|
||||
});
|
||||
|
||||
// =============================================================
|
||||
// 3. 核心业务服务
|
||||
// =============================================================
|
||||
|
||||
// 文件存储服务 (依赖 processId)
|
||||
services.AddSingleton<IStorageService>(sp => new FileStorageService(processId));
|
||||
|
||||
// 核心设备管理器 (自动注入 IStorageService)
|
||||
services.AddSingleton<CameraManager>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user