Files
Ayay/SHH.CameraSdk/Abstractions/Models/MetadataDiff.cs

53 lines
2.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace SHH.CameraSdk;
/// <summary>
/// 元数据变更差异描述符(只读结构体)
/// 核心职责:对比设备当前运行元数据与最新拉取元数据的差异,明确变更类型及业务影响
/// 协作场景指导上层模块执行差异化处理如仅刷新UI、重启流、调整功能按钮
/// </summary>
public readonly struct MetadataDiff
{
#region --- (Change Type Properties) ---
/// <summary>
/// 设备基础描述信息变更(如名称、位置)
/// 业务影响:仅需刷新 UI 显示文字,无需中断当前流
/// </summary>
public bool NameChanged { get; init; }
/// <summary>
/// 设备能力集变更(如新增/移除对讲、截图功能)
/// 业务影响:需调整 UI 功能按钮的可用性,无需中断流
/// </summary>
public bool CapabilityChanged { get; init; }
/// <summary>
/// 致命/破坏性变更(如设备型号、编码格式变更)
/// 业务影响:必须销毁当前流实例并重启,否则会导致流异常或崩溃
/// </summary>
public bool IsMajorChange { get; init; }
/// <summary>
/// 分辨率/帧率档位列表变更
/// 业务影响:需重新校验当前流参数是否合法,非法则自动降级到可用档位
/// </summary>
public bool ResolutionProfilesChanged { get; init; }
/// <summary>
/// 全局变更标识:是否存在任何类型的元数据变更
/// 业务用途:快速判断是否需要执行后续差异化处理逻辑
/// </summary>
public bool HasChanges => NameChanged || CapabilityChanged || IsMajorChange || ResolutionProfilesChanged;
#endregion
#region --- (Quick Instances) ---
/// <summary>
/// 无变更状态的快捷实例
/// 业务用途:元数据刷新后无变化时直接返回,避免重复创建空对象
/// </summary>
public static MetadataDiff None => new();
#endregion
}