2026-01-09 12:30:36 +08:00
|
|
|
|
using MessagePack;
|
|
|
|
|
|
using System;
|
2026-01-03 00:16:28 +08:00
|
|
|
|
|
|
|
|
|
|
namespace SHH.Contracts
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 服务端身份注册信息 (DTO)
|
|
|
|
|
|
/// <para>用于服务端主动连上客户端后,上报自身的端口和身份信息</para>
|
|
|
|
|
|
/// </summary>
|
2026-01-09 12:30:36 +08:00
|
|
|
|
[MessagePackObject]
|
|
|
|
|
|
public class RegisterPayload
|
2026-01-03 00:16:28 +08:00
|
|
|
|
{
|
2026-01-09 12:30:36 +08:00
|
|
|
|
#region --- 0. 协议自描述 ---
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 协议类型标识 (人工可读)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Key(0)]
|
|
|
|
|
|
public string Protocol { get; set; } = ProtocolHeaders.ServerRegister;
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
2026-01-03 00:16:28 +08:00
|
|
|
|
#region --- 1. 身份标识 ---
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 进程 ID (用于区分同一台机器上的多个实例)
|
|
|
|
|
|
/// </summary>
|
2026-01-09 12:30:36 +08:00
|
|
|
|
[Key(1)]
|
2026-01-03 00:16:28 +08:00
|
|
|
|
public int ProcessId { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 实例唯一标识符
|
|
|
|
|
|
/// <para>启动时通过命令行传入,例如 "Gateway_Factory_A"</para>
|
|
|
|
|
|
/// </summary>
|
2026-01-09 12:30:36 +08:00
|
|
|
|
[Key(2)]
|
2026-01-03 00:16:28 +08:00
|
|
|
|
public string InstanceId { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 服务端版本号
|
|
|
|
|
|
/// </summary>
|
2026-01-09 12:30:36 +08:00
|
|
|
|
[Key(3)]
|
2026-01-03 00:16:28 +08:00
|
|
|
|
public string Version { get; set; } = "1.0.0";
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region --- 2. 网络诊断信息 (用于运维) ---
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 服务端所在的局域网 IP
|
|
|
|
|
|
/// <para>客户端无法直接连接此IP(因为可能是内网),但运维人员需要知道</para>
|
|
|
|
|
|
/// </summary>
|
2026-01-09 12:30:36 +08:00
|
|
|
|
[Key(4)]
|
2026-01-03 00:16:28 +08:00
|
|
|
|
public string ServerIp { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// WebAPI 监听端口 (HTTP)
|
|
|
|
|
|
/// <para>用于运维人员打开 Swagger 进行调试</para>
|
|
|
|
|
|
/// </summary>
|
2026-01-09 12:30:36 +08:00
|
|
|
|
[Key(5)]
|
2026-01-03 00:16:28 +08:00
|
|
|
|
public int WebApiPort { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 视频流端口 (ZeroMQ Publisher/Push)
|
|
|
|
|
|
/// </summary>
|
2026-01-09 12:30:36 +08:00
|
|
|
|
[Key(6)]
|
2026-01-03 00:16:28 +08:00
|
|
|
|
public int VideoPort { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 指令流端口 (ZeroMQ Response)
|
|
|
|
|
|
/// </summary>
|
2026-01-09 12:30:36 +08:00
|
|
|
|
[Key(7)]
|
2026-01-03 00:16:28 +08:00
|
|
|
|
public int CmdPort { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region --- 3. 运行时状态 ---
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 启动时间
|
|
|
|
|
|
/// </summary>
|
2026-01-09 12:30:36 +08:00
|
|
|
|
[Key(8)]
|
2026-01-03 00:16:28 +08:00
|
|
|
|
public DateTime StartTime { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 描述信息 (可选)
|
|
|
|
|
|
/// </summary>
|
2026-01-09 12:30:36 +08:00
|
|
|
|
[Key(9)]
|
2026-01-03 00:16:28 +08:00
|
|
|
|
public string Description { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|