using System; using System.Net; using System.Threading; using System.Threading.Tasks; using CoreAgent.Application.Commands.RanAPI; using CoreAgent.Domain.Interfaces.Network; using CoreAgent.Domain.Models.Common; using MediatR; using Microsoft.Extensions.Logging; namespace CoreAgent.Application.Handlers.RanAPI; /// /// 设置发送增益命令处理器 /// public class SetTxGainCommandHandler : IRequestHandler> { private readonly IRanAPICommandHandlerFactory _ranAPICommandHandlerFactory; private readonly ILogger _logger; /// /// 构造函数 /// /// RAN API命令处理器工厂 /// 日志记录器 public SetTxGainCommandHandler( IRanAPICommandHandlerFactory ranAPICommandHandlerFactory, ILogger logger) { _ranAPICommandHandlerFactory = ranAPICommandHandlerFactory ?? throw new ArgumentNullException(nameof(ranAPICommandHandlerFactory)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } /// /// 处理设置发送增益命令 /// /// 设置发送增益命令 /// 取消令牌 /// 设置发送增益结果 public async Task> Handle(SetTxGainCommand request, CancellationToken cancellationToken) { try { _logger.LogInformation("正在设置发送增益,端口数量: {PortCount}", request.GainSettings?.Count); // 通过工厂获取RAN增益控制处理器并执行操作 var ranGainControlHandler = _ranAPICommandHandlerFactory.CreateGainControlHandler(); var result = await ranGainControlHandler.SetTxGainAsync(request.GainSettings); if (result) { _logger.LogInformation("发送增益设置成功"); return ApiActionResult.Ok(true, "发送增益设置成功"); } else { _logger.LogWarning("发送增益设置失败"); return ApiActionResult.Error( "发送增益设置失败", "TX_GAIN_SET_FAILED", HttpStatusCode.BadRequest); } } catch (Exception ex) { _logger.LogError(ex, "设置发送增益失败"); return ApiActionResult.Error( $"设置发送增益失败: {ex.Message}", "INTERNAL_ERROR", HttpStatusCode.InternalServerError); } } }