using System.IO; using XP.Hardware.RaySource.Comet.Messages; using XP.Hardware.RaySource.Comet.Messages.Responses; namespace XP.Hardware.RaySource.Comet.Host.Pipe { /// /// 推送管理器 /// 负责将主动推送消息通过管道发送给主进程 /// static class PushNotifier { private static StreamWriter _writer; private static object _writeLock; /// /// 初始化推送管理器 /// /// 管道写入器 /// 写入锁对象 public static void Initialize(StreamWriter writer, object writeLock) { _writer = writer; _writeLock = writeLock; } /// /// 发送推送消息给主进程 /// 使用 lock 保护写入,防止与命令响应交错 /// /// 推送响应对象(IsPush 应为 true) public static void SendPush(RaySourceResponse response) { if (_writer == null || _writeLock == null) return; response.IsPush = true; var json = MessageSerializer.Serialize(response); lock (_writeLock) { _writer.WriteLine(json); } } } }