using MultiWheelC.TrajectoryPlanning.Mapping;

namespace MultiWheelC.TrajectoryPlanning.CoarsePath.Facade;

/// <summary>
/// 接收一次地图构建和粗路径规划完成后的旁路调试数据。
/// 实现不得修改输入对象；服务会隔离实现抛出的异常，调试失败不会改变规划结果。
/// </summary>
public interface IPlanningDebugSink
{
    /// <summary>
    /// 发布本次编排得到的地图和规划结果。
    /// 参数：mapResult 为地图创建结果；planningResult 为对应的完整或失败规划结果；二者均不可由接收方修改。
    /// </summary>
    void Publish(PlanningMapBuildResult mapResult, PlanningResult planningResult);
}

internal sealed class NullPlanningDebugSink : IPlanningDebugSink
{
    internal static readonly NullPlanningDebugSink Instance = new NullPlanningDebugSink();

    private NullPlanningDebugSink()
    {
    }

    public void Publish(PlanningMapBuildResult mapResult, PlanningResult planningResult)
    {
    }
}
