37 lines
1.5 KiB
C#
37 lines
1.5 KiB
C#
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 是保留位,暂不用
|
||
}
|
||
} |