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);
}
}
}