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 SetAllTxGainCommandHandler : IRequestHandler> { private readonly IRanAPICommandHandlerFactory _ranAPICommandHandlerFactory; private readonly ILogger _logger; /// /// 构造函数 /// /// RAN API命令处理器工厂 /// 日志记录器 public SetAllTxGainCommandHandler( IRanAPICommandHandlerFactory ranAPICommandHandlerFactory, ILogger logger) { _ranAPICommandHandlerFactory = ranAPICommandHandlerFactory ?? throw new ArgumentNullException(nameof(ranAPICommandHandlerFactory)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } /// /// 处理设置所有端口发送增益命令 /// /// 设置所有端口发送增益命令 /// 取消令牌 /// 设置所有端口发送增益结果 public async Task> Handle(SetAllTxGainCommand request, CancellationToken cancellationToken) { try { _logger.LogInformation("正在设置所有端口发送增益,端口数量: {PortCount}", request.GainValues?.Length); // 通过工厂获取RAN增益控制处理器并执行操作 var ranGainControlHandler = _ranAPICommandHandlerFactory.CreateGainControlHandler(); var result = await ranGainControlHandler.SetAllTxGainAsync(request.GainValues); if (result) { _logger.LogInformation("所有端口发送增益设置成功"); return ApiActionResult.Ok(true, "所有端口发送增益设置成功"); } else { _logger.LogWarning("所有端口发送增益设置失败"); return ApiActionResult.Error( "所有端口发送增益设置失败", "ALL_TX_GAIN_SET_FAILED", HttpStatusCode.BadRequest); } } catch (Exception ex) { _logger.LogError(ex, "设置所有端口发送增益失败"); return ApiActionResult.Error( $"设置所有端口发送增益失败: {ex.Message}", "INTERNAL_ERROR", HttpStatusCode.InternalServerError); } } }