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.
2.7 KiB
2.7 KiB
Constructor.cs (自动转换为Markdown)
// 以下内容为原始C#代码,含详细注释
// 文件原路径:Managers/WebSocketMgr/Constructor.cs
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebSocket4Net;
namespace CoreAgent.ProtocolClient.Managers.WebSocketMgr
{
public partial class WebSocketMessageManager
{
#region 构造函数
/// <summary>
/// 构造函数 - 对应LTEClientWebSocket构造函数中的WebSocket相关初始化
///
/// 初始化说明:
/// 1. 创建MessageIdManager替代原始的_messageId和_logGetId字段
/// 2. 创建消息队列_messageFifo,保持与原始实现一致
/// 3. 不初始化WebSocket实例,在Connect方法中创建
/// 4. 移除_sentMessages和_receivedMessages的初始化
///
/// 对应关系:
/// - 参数clientName:对应LTEClientWebSocket构造函数中的config.Name
/// - 参数logger:对应LTEClientWebSocket构造函数中的logger参数
/// - _messageIdManager:替代原始的_messageId和_logGetId字段
/// - _messageFifo:对应原始的_messageFifo初始化
/// - _disposed:对应原始的_disposed初始化
/// - 日志记录:对应原始的构造函数日志记录
///
/// 重构改进:
/// - 参数验证:增加了对clientName和logger的null检查
/// - 职责分离:专注于WebSocket相关初始化
/// - 功能增强:通过MessageIdManager提供更好的消息ID管理
/// - 移除冗余:移除了消息缓存相关的初始化
/// </summary>
/// <param name="clientName">客户端名称,对应LTEClientWebSocket._config.Name</param>
/// <param name="logger">日志记录器,对应LTEClientWebSocket._logger</param>
public WebSocketMessageManager(string clientName, ILogger logger)
{
_clientName = clientName ?? throw new ArgumentNullException(nameof(clientName));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
// 创建MessageIdManager,替代原始的_messageId和_logGetId字段
_messageIdManager = new MessageIdManager(clientName, logger);
// 创建消息队列,使用BlockingCollection优化线程安全性和性能
_messageFifo = new BlockingCollection<JObject>();
_logger.LogInformation($"[{_clientName}] 创建WebSocket消息管理器");
}
#endregion
}
}