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.

40 lines
1.6 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CoreAgent.ProtocolClient.Context.UeStateManager;
using CoreAgent.ProtocolClient.Enums;
using Microsoft.Extensions.Logging;
namespace CoreAgent.ProtocolClient.Context
{
public class ProtocolClientContext
{
// 常量和正则表达式已迁移至 ProtocolLogPatterns 静态类,便于统一管理和调用。
public readonly ILoggerFactory _loggerFactory;
public ProtocolBasicInfo BasicInfo { get; set; } = new();
public ProtocolFeatureFlags FeatureFlags { get; set; } = new();
public ProtocolLogContext LogContext { get; set; }
public UeIdentifierManager UeIdentifier { get; set; }
public CellParameterManager CellParameterManager { get; set; } = new();
public ClientState State { get; set; } = ClientState.Stop;
public ProtocolClientContext(ILoggerFactory loggerFactory)
{
_loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
// 使用ILoggerFactory为各个组件创建正确的Logger
var ueIdentifierLogger = _loggerFactory.CreateLogger<UeIdentifierManager>();
var logContextLogger = _loggerFactory.CreateLogger<ProtocolLogContext>();
// 先创建UeIdentifierManager
UeIdentifier = new UeIdentifierManager(ueIdentifierLogger);
// 然后创建ProtocolLogContext,传入this引用
LogContext = new ProtocolLogContext(logContextLogger, this);
}
}
}