IVisualizationDataProcessor.cs 2.07 KB
using Rcs.Domain.Models.VDA5050;

namespace Rcs.Infrastructure.Mqtt.ProcessorFactory;

/// <summary>
/// 可视化数据处理结果
/// @author zzy
/// </summary>
public class VisualizationProcessResult
{
    /// <summary>
    /// 处理是否成功
    /// </summary>
    public bool Success { get; set; }

    /// <summary>
    /// 处理结果消息
    /// </summary>
    public string Message { get; set; } = string.Empty;

    /// <summary>
    /// 位置信息是否已更新
    /// </summary>
    public bool LocationUpdated { get; set; }

    /// <summary>
    /// 创建成功结果
    /// </summary>
    /// <param name="message">结果消息</param>
    /// <param name="locationUpdated">位置是否已更新</param>
    /// <returns>成功结果实例</returns>
    public static VisualizationProcessResult CreateSuccess(string message = "", bool locationUpdated = false)
    {
        return new VisualizationProcessResult { Success = true, Message = message, LocationUpdated = locationUpdated };
    }

    /// <summary>
    /// 创建失败结果
    /// </summary>
    /// <param name="message">失败原因</param>
    /// <returns>失败结果实例</returns>
    public static VisualizationProcessResult CreateFailure(string message)
    {
        return new VisualizationProcessResult { Success = false, Message = message };
    }
}

/// <summary>
/// 可视化数据处理器接口 - 负责将解析后的可视化数据写入缓存/推送前端等后续处理
/// 各厂家实现此接口以处理厂家特有的可视化属性
/// @author zzy
/// </summary>
public interface IVisualizationDataProcessor
{
    /// <summary>
    /// 处理解析后的可视化数据
    /// </summary>
    /// <param name="manufacturer">机器人制造商</param>
    /// <param name="serialNumber">机器人序列号</param>
    /// <param name="visualization">解析后的可视化数据(可能是基类或厂家子类)</param>
    /// <returns>处理结果</returns>
    Task<VisualizationProcessResult> ProcessAsync(
        string manufacturer, string serialNumber, Visualization visualization);
}