using System;

namespace SHH.CameraDashboard;

/// <summary>
/// [Dashboard端] Service 启动参数构建器
/// 职责：生成标准化的命令行参数字符串，告诉 Service 如何反向连接
/// </summary>
public static class ServiceLaunchOptions
{
    /// <summary>
    /// 生成启动参数
    /// </summary>
    /// <param name="serviceId">给子服务起的唯一ID (如 "CamService_01")</param>
    /// <param name="dashboardIp">Dashboard 的 IP (通常是 127.0.0.1)</param>
    /// <param name="streamPort">Dashboard 监听视频的端口 (如 6000)</param>
    /// <param name="serviceApiPort">指定子服务 WebAPI 监听的端口 (如 5005)</param>
    /// <returns>命令行参数字符串</returns>
    public static string BuildArguments(string serviceId, string dashboardIp, int streamPort, int serviceApiPort)
    {
        // 获取当前 Dashboard 进程 ID，传给子进程做“父进程守护”
        int parentPid = Environment.ProcessId;

        // 拼接参数：
        // --pid: 父进程ID
        // --uris: 反向连接的目标地址 (Dashboard 的地址)
        // --mode: 1 (Active模式，代表 Service 主动连接 Dashboard)
        // --ports: Service 自身的 WebAPI 端口 (防止与 Dashboard 冲突)

        return $"" +
               $"--pid {parentPid} " +
               $"--id \"{serviceId}\" " +
               $"--uris \"{dashboardIp},{streamPort}\" " +
               $"--mode 1 " +
               $"--ports \"{serviceApiPort},100\""; // 100 是保留位，暂不用
    }
}