using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CoreAgent.ProtocolClient.Managers.WebSocketMgr; using CoreAgent.ProtocolClient.Models; using Newtonsoft.Json.Linq; namespace CoreAgent.ProtocolClient.ProtocolEngineCore { /// /// 管理自定义消息处理器 /// 职责: /// 1. 向服务器 "register" 和 "unregister" 消息处理器。 /// 2. 存储和管理名称与 MessageHandler 委托的映射。 /// 3. 将传入的自定义消息分发给正确的处理器。 /// public class MessageHandlerManager { private readonly WebSocketMessageManager _messageManager; private readonly Action?, bool> _sendMessage; public MessageHandlerManager(WebSocketMessageManager messageManager, Action?, bool> sendMessage) { _messageManager = messageManager; _sendMessage = sendMessage; } public void SetMessageHandler(string[] names, MessageHandler handler) { _sendMessage(new JObject { ["message"] = "register", ["register"] = string.Join(",", names) }, null, false); _messageManager.SetMessageHandler(names, handler); } public void UnsetMessageHandler(string[] names) { _sendMessage(new JObject { ["message"] = "register", ["unregister"] = string.Join(",", names) }, null, false); _messageManager.UnsetMessageHandler(names); } } }