|
|
@@ -45,6 +45,11 @@ namespace IvfTl.ControlHost
|
|
|
|
|
|
// 2) 先起 HTTP(让 operate 能尽早探到"在启动中"),started=false。
|
|
|
// 阶段2:/status rich + /serial/pause|resume + /shutdown。
|
|
|
+ var debugMgr = new IvfTl.ControlHost.Debug.DebugSessionManager(
|
|
|
+ houseSn => IvfTl.Hardware.Impl.HardwareAccessLayer.Instance.GetHouseGate(houseSn),
|
|
|
+ () => DateTime.UtcNow,
|
|
|
+ ttlMs: 10000,
|
|
|
+ log: msg => Log4netHelper.WriteLog(msg));
|
|
|
_http = new ControlHttpServer(
|
|
|
hostArgs.Port,
|
|
|
BuildStatus, // /ping 轻量
|
|
|
@@ -52,7 +57,7 @@ namespace IvfTl.ControlHost
|
|
|
HandleShutdown, // /shutdown 受护栏停机
|
|
|
HandleSerialPause, // /serial/pause 借串口让路
|
|
|
HandleSerialResume, // /serial/resume 归还恢复
|
|
|
- msg => Log4netHelper.WriteLog(msg));
|
|
|
+ msg => Log4netHelper.WriteLog(msg), debugMgr);
|
|
|
_http.Start();
|
|
|
|
|
|
// 3) 账号守卫(对齐 operate 空账号跳过逻辑)。
|
|
|
@@ -71,6 +76,15 @@ namespace IvfTl.ControlHost
|
|
|
|
|
|
// 5) 驻留:主线程阻塞等退出信号(阶段2 的 /shutdown 会 Set 此事件)。
|
|
|
_exitEvent = new ManualResetEventSlim(false);
|
|
|
+ // TTL 看门狗:周期 SweepExpired 回收超时调试会话(spec §5.1,绝不指望 operate 主动还)。
|
|
|
+ System.Threading.Tasks.Task.Run(async () =>
|
|
|
+ {
|
|
|
+ while (!(_exitEvent?.IsSet ?? false))
|
|
|
+ {
|
|
|
+ try { debugMgr.SweepExpired(); } catch (Exception ex) { Log4netHelper.WriteLog("[debug] Sweep 异常:" + ex.Message); }
|
|
|
+ await System.Threading.Tasks.Task.Delay(3000);
|
|
|
+ }
|
|
|
+ });
|
|
|
_exitEvent.Wait();
|
|
|
return 0;
|
|
|
}
|