Browse Source

feat: 优化蜂窝网络启动逻辑,添加IsInitialized属性控制初始化流程

master
root 3 days ago
parent
commit
7a4c3e77c2
  1. 5
      CoreAgent.Domain/Contexts/CellularNetworkContext.cs
  2. 5
      CoreAgent.Domain/Interfaces/Network/ICellularNetworkContext.cs
  3. 18
      CoreAgent.Infrastructure/Services/Network/CellularNetworkService.cs

5
CoreAgent.Domain/Contexts/CellularNetworkContext.cs

@ -24,6 +24,11 @@ public class CellularNetworkContext : ICellularNetworkContext, IDisposable
/// </summary>
public CancellationTokenSource TokenSource => _token;
/// <summary>
/// 是否已初始化
/// </summary>
public bool IsInitialized => _isInitialized;
public CellularNetworkContext(
IOptions<NetworkCommandConfig> networkCommandConfig,
IOptions<AppSettings> appSettings)

5
CoreAgent.Domain/Interfaces/Network/ICellularNetworkContext.cs

@ -13,6 +13,11 @@ public interface ICellularNetworkContext
/// </summary>
CancellationTokenSource TokenSource { get; }
/// <summary>
/// 是否已初始化
/// </summary>
bool IsInitialized { get; }
/// <summary>
/// 初始化上下文
/// </summary>

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

@ -40,8 +40,14 @@ public class CellularNetworkService : ICellularNetworkService
_context = context ?? throw new ArgumentNullException(nameof(context));
}
/// <summary>
/// 启动蜂窝网络
/// </summary>
/// <param name="key">网络配置键</param>
/// <returns>启动结果</returns>
public async Task<CellularNetworkOperationResult> StartAsync(string key)
{
// 1. 参数验证
if (string.IsNullOrEmpty(key))
{
_logger.LogError("启动蜂窝网络失败:配置键为空");
@ -50,21 +56,29 @@ public class CellularNetworkService : ICellularNetworkService
try
{
// 2. 获取启动锁,防止并发启动
if (!await _startLock.WaitAsync(TimeSpan.FromSeconds(LockTimeoutSeconds)))
{
_logger.LogWarning("蜂窝网络启动操作被锁定,可能已有其他启动操作正在进行");
return CellularNetworkOperationResult.Failure("蜂窝网络启动操作被锁定,可能已有其他启动操作正在进行");
}
// 检查网络状态
// 3. 状态检查
// 如果是第二次启动(已初始化),需要先检查网络状态
if (_context.IsInitialized)
{
// 检查网络状态,确保没有冲突的配置
var stateCheckResult = CheckNetworkState(key);
if (!stateCheckResult.IsSuccess)
{
return stateCheckResult;
}
}
// 初始化网络上下文
// 4. 初始化网络上下文
_context.Initialize(key);
// 5. 启动网络
var result = await StartNetworkAsync(key);
if (!result.IsSuccess)
{

Loading…
Cancel
Save