using System;
namespace SHH.CameraDashboard;
///
/// [Dashboard端] Service 启动参数构建器
/// 职责:生成标准化的命令行参数字符串,告诉 Service 如何反向连接
///
public static class ServiceLaunchOptions
{
///
/// 生成启动参数
///
/// 给子服务起的唯一ID (如 "CamService_01")
/// Dashboard 的 IP (通常是 127.0.0.1)
/// Dashboard 监听视频的端口 (如 6000)
/// 指定子服务 WebAPI 监听的端口 (如 5005)
/// 命令行参数字符串
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 是保留位,暂不用
}
}