Files
Ayay/SHH.CameraDashboard/Invokes/ServiceLaunchOptions.cs
2026-01-05 14:54:06 +08:00

37 lines
1.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 是保留位,暂不用
}
}