Browse Source

refactor: 优化网络命令类型和执行逻辑 1. 重构NetworkCommandType枚举,增加更详细的命令类型 2. 优化ExecuteInitializeCommandsAsync方法,添加bStartInit参数控制PreNetworkOperation命令执行

master
root 4 days ago
parent
commit
7c70f69f1a
  1. 24
      CoreAgent.Domain/Models/System/NetworkCommandType.cs
  2. 48
      CoreAgent.Infrastructure/Services/Network/CellularNetworkService.cs

24
CoreAgent.Domain/Models/System/NetworkCommandType.cs

@ -6,22 +6,32 @@ namespace CoreAgent.Domain.Models.System;
public enum NetworkCommandType public enum NetworkCommandType
{ {
/// <summary> /// <summary>
/// 初始化命令 /// 初始化命令 - 系统初始化时执行
/// </summary> /// </summary>
Initialize = 0, Initialize = 0,
/// <summary> /// <summary>
/// 启动命令 /// 网络前置命令 - 执行网络操作前的准备工作
/// </summary> /// </summary>
Start = 1, PreNetworkOperation = 1,
/// <summary> /// <summary>
/// 停止命令 /// 网络执行命令 - 执行网络操作
/// </summary> /// </summary>
Stop = 2, NetworkOperation = 2,
/// <summary> /// <summary>
/// 状态命令 /// 网络后置命令 - 执行网络操作后的清理工作
/// </summary> /// </summary>
Status = 3 PostNetworkOperation = 3,
/// <summary>
/// 停止网络命令 - 停止网络操作
/// </summary>
StopNetwork = 4,
/// <summary>
/// 状态检查命令 - 检查网络状态
/// </summary>
StatusCheck = 5
} }

48
CoreAgent.Infrastructure/Services/Network/CellularNetworkService.cs

@ -96,7 +96,7 @@ public class CellularNetworkService : ICellularNetworkService
if (commands?.NetworkCommands != null) if (commands?.NetworkCommands != null)
{ {
var stopCommands = commands.NetworkCommands var stopCommands = commands.NetworkCommands
.Where(s => s.Type == NetworkCommandType.Stop) .Where(s => s.Type == NetworkCommandType.StopNetwork)
.ToArray(); .ToArray();
foreach (var cmd in stopCommands) foreach (var cmd in stopCommands)
@ -145,7 +145,7 @@ public class CellularNetworkService : ICellularNetworkService
} }
// 3. 执行初始化命令 // 3. 执行初始化命令
await ExecuteInitializeCommandsAsync(); await ExecuteInitializeCommandsAsync(true);
// 4. 启动网络接口 // 4. 启动网络接口
_logger.LogInformation("正在启动蜂窝网络接口: {InterfaceName}", key); _logger.LogInformation("正在启动蜂窝网络接口: {InterfaceName}", key);
@ -166,14 +166,14 @@ public class CellularNetworkService : ICellularNetworkService
return true; return true;
} }
private async Task ExecuteInitializeCommandsAsync() private async Task ExecuteInitializeCommandsAsync(bool bStartInit = false)
{ {
var commands = _context.GetNetworkCommandConfig(); var commands = _context.GetNetworkCommandConfig();
if (commands?.NetworkCommands != null) if (commands?.NetworkCommands != null)
{ {
var initCommands = commands.NetworkCommands var initCommands = commands.NetworkCommands
.Where(s => s.Type == NetworkCommandType.Initialize) .Where(s => s.Type == NetworkCommandType.Initialize ||
(bStartInit && s.Type == NetworkCommandType.PreNetworkOperation))
.ToArray(); .ToArray();
foreach (var cmd in initCommands) foreach (var cmd in initCommands)
@ -224,7 +224,7 @@ public class CellularNetworkService : ICellularNetworkService
} }
var commands = _context.GetNetworkCommandConfig(); var commands = _context.GetNetworkCommandConfig();
var startCommand = commands.NetworkCommands.FirstOrDefault(s => s.Type == NetworkCommandType.Start); var startCommand = commands.NetworkCommands.FirstOrDefault(s => s.Type == NetworkCommandType.NetworkOperation);
if (startCommand == null) if (startCommand == null)
{ {
_logger.LogError("未找到启动命令配置"); _logger.LogError("未找到启动命令配置");
@ -268,31 +268,49 @@ public class CellularNetworkService : ICellularNetworkService
Directory.CreateDirectory(_appSettings.TempDirectory); Directory.CreateDirectory(_appSettings.TempDirectory);
} }
// 复制 RAG 配置值并更新路径 // 复制 RAG 配置文件
if (!string.IsNullOrEmpty(networkConfig.RagConfig)) if (!string.IsNullOrEmpty(networkConfig.RagConfig))
{ {
if (!File.Exists(networkConfig.RagConfig))
{
_logger.LogError("RAG配置文件不存在: {FilePath}", networkConfig.RagConfig);
return false;
}
var ragFileName = Path.GetFileName(networkConfig.RagConfig); var ragFileName = Path.GetFileName(networkConfig.RagConfig);
var ragTempPath = $"{_appSettings.TempDirectory}{ragFileName}"; var ragTempPath = Path.Combine(_appSettings.TempDirectory, ragFileName);
await File.WriteAllTextAsync(ragTempPath, networkConfig.RagConfig); File.Copy(networkConfig.RagConfig, ragTempPath, true);
networkConfig.RagConfig = ragTempPath; networkConfig.RagConfig = ragTempPath;
} }
// 复制核心网络配置值和IMS配置值并更新路径 // 复制核心网络配置文件和IMS配置文件
foreach (var config in networkConfig.CoreOrImsConfigs) foreach (var config in networkConfig.CoreOrImsConfigs)
{ {
if (!string.IsNullOrEmpty(config.CoreNetworkConfig)) if (!string.IsNullOrEmpty(config.CoreNetworkConfig))
{ {
if (!File.Exists(config.CoreNetworkConfig))
{
_logger.LogError("核心网络配置文件不存在: {FilePath}", config.CoreNetworkConfig);
return false;
}
var coreFileName = Path.GetFileName(config.CoreNetworkConfig); var coreFileName = Path.GetFileName(config.CoreNetworkConfig);
var coreTempPath = $"{_appSettings.TempDirectory}{coreFileName}"; var coreTempPath = Path.Combine(_appSettings.TempDirectory, coreFileName);
await File.WriteAllTextAsync(coreTempPath, config.CoreNetworkConfig); File.Copy(config.CoreNetworkConfig, coreTempPath, true);
config.CoreNetworkConfig = coreTempPath; config.CoreNetworkConfig = coreTempPath;
} }
if (!string.IsNullOrEmpty(config.ImsConfig)) if (!string.IsNullOrEmpty(config.ImsConfig))
{ {
if (!File.Exists(config.ImsConfig))
{
_logger.LogError("IMS配置文件不存在: {FilePath}", config.ImsConfig);
return false;
}
var imsFileName = Path.GetFileName(config.ImsConfig); var imsFileName = Path.GetFileName(config.ImsConfig);
var imsTempPath = $"{_appSettings.TempDirectory}{imsFileName}"; var imsTempPath = Path.Combine(_appSettings.TempDirectory, imsFileName);
await File.WriteAllTextAsync(imsTempPath, config.ImsConfig); File.Copy(config.ImsConfig, imsTempPath, true);
config.ImsConfig = imsTempPath; config.ImsConfig = imsTempPath;
} }
} }
@ -301,7 +319,7 @@ public class CellularNetworkService : ICellularNetworkService
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, "复制配置到临时目录时发生错误"); _logger.LogError(ex, "复制配置文件到临时目录时发生错误");
return false; return false;
} }
} }

Loading…
Cancel
Save