You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.5 KiB
43 lines
1.5 KiB
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
|
|
{
|
|
/// <summary>
|
|
/// 管理自定义消息处理器
|
|
/// 职责:
|
|
/// 1. 向服务器 "register" 和 "unregister" 消息处理器。
|
|
/// 2. 存储和管理名称与 MessageHandler 委托的映射。
|
|
/// 3. 将传入的自定义消息分发给正确的处理器。
|
|
/// </summary>
|
|
public class MessageHandlerManager
|
|
{
|
|
private readonly WebSocketMessageManager _messageManager;
|
|
private readonly Action<JObject, Action<JObject>?, bool> _sendMessage;
|
|
|
|
|
|
public MessageHandlerManager(WebSocketMessageManager messageManager, Action<JObject, Action<JObject>?, 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);
|
|
}
|
|
}
|
|
}
|