9 changed files with 393 additions and 361 deletions
@ -0,0 +1,67 @@ |
|||||
|
using CoreAgent.Domain.Models.Network; |
||||
|
using CoreAgent.Domain.Models.System; |
||||
|
|
||||
|
namespace CoreAgent.Domain.Interfaces.Network; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 蜂窝网络上下文接口
|
||||
|
/// </summary>
|
||||
|
public interface ICellularNetworkContext |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 获取取消令牌源
|
||||
|
/// </summary>
|
||||
|
CancellationTokenSource TokenSource { get; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 取消操作
|
||||
|
/// </summary>
|
||||
|
void Cancel(); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 初始化网络上下文
|
||||
|
/// </summary>
|
||||
|
void Initialize(); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取网络命令配置
|
||||
|
/// </summary>
|
||||
|
NetworkCommandConfig GetNetworkCommandConfig(); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取应用设置
|
||||
|
/// </summary>
|
||||
|
AppSettings GetAppSettings(); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 设置网络配置键
|
||||
|
/// </summary>
|
||||
|
/// <param name="key">配置键</param>
|
||||
|
string SetNeConfigKey(string key); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取网络配置键
|
||||
|
/// </summary>
|
||||
|
string GetNeConfigKey(); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取指定类型的命令配置
|
||||
|
/// </summary>
|
||||
|
/// <param name="type">命令类型</param>
|
||||
|
List<CommandTemplateConfig> GetCommandsByType(NetworkCommandType type); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取所有命令类型
|
||||
|
/// </summary>
|
||||
|
NetworkCommandType[] GetCommandTypes(); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取网络状态
|
||||
|
/// </summary>
|
||||
|
CellularNetworkState GetNetworkState(); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 重置网络上下文
|
||||
|
/// </summary>
|
||||
|
void Reset(); |
||||
|
} |
@ -0,0 +1,84 @@ |
|||||
|
using CoreAgent.Domain.Models.System; |
||||
|
|
||||
|
namespace CoreAgent.Domain.Models.Network; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 蜂窝网络状态
|
||||
|
/// </summary>
|
||||
|
public class CellularNetworkState |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 网络接口名称
|
||||
|
/// </summary>
|
||||
|
public string NeConfigKey { get; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 是否已初始化
|
||||
|
/// </summary>
|
||||
|
public bool IsInitialized { get; private set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 最后启动时间
|
||||
|
/// </summary>
|
||||
|
public DateTime? LastStartTime { get; private set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 最后停止时间
|
||||
|
/// </summary>
|
||||
|
public DateTime? LastStopTime { get; private set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 当前运行状态
|
||||
|
/// </summary>
|
||||
|
public NetworkStatus CurrentStatus { get; private set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 当前网络类型
|
||||
|
/// </summary>
|
||||
|
public NetworkType CurrentNetworkType { get; private set; } |
||||
|
|
||||
|
public CellularNetworkState(string neConfigKey) |
||||
|
{ |
||||
|
NeConfigKey = neConfigKey ?? throw new ArgumentNullException(nameof(neConfigKey)); |
||||
|
IsInitialized = false; |
||||
|
CurrentStatus = NetworkStatus.Unknown; |
||||
|
CurrentNetworkType = NetworkType.Unknown; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 更新网络状态
|
||||
|
/// </summary>
|
||||
|
public void UpdateStatus(NetworkStatus status) |
||||
|
{ |
||||
|
CurrentStatus = status; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 更新网络类型
|
||||
|
/// </summary>
|
||||
|
public void UpdateNetworkType(NetworkType type) |
||||
|
{ |
||||
|
CurrentNetworkType = type; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 标记为已启动
|
||||
|
/// </summary>
|
||||
|
public void MarkAsStarted() |
||||
|
{ |
||||
|
IsInitialized = true; |
||||
|
LastStartTime = DateTime.Now; |
||||
|
CurrentStatus = NetworkStatus.Connected; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 标记为已停止
|
||||
|
/// </summary>
|
||||
|
public void MarkAsStopped() |
||||
|
{ |
||||
|
IsInitialized = false; |
||||
|
LastStopTime = DateTime.Now; |
||||
|
CurrentStatus = NetworkStatus.Disconnected; |
||||
|
CurrentNetworkType = NetworkType.Unknown; |
||||
|
} |
||||
|
} |
@ -0,0 +1,48 @@ |
|||||
|
namespace CoreAgent.Domain.Models.Network; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 网络状态
|
||||
|
/// </summary>
|
||||
|
public enum NetworkStatus |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 未知
|
||||
|
/// </summary>
|
||||
|
Unknown, |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 已连接
|
||||
|
/// </summary>
|
||||
|
Connected, |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 未连接
|
||||
|
/// </summary>
|
||||
|
Disconnected |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 网络类型
|
||||
|
/// </summary>
|
||||
|
public enum NetworkType |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 未知
|
||||
|
/// </summary>
|
||||
|
Unknown, |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 4G网络
|
||||
|
/// </summary>
|
||||
|
LTE, |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 5G网络
|
||||
|
/// </summary>
|
||||
|
NR, |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 4+5 G网络
|
||||
|
/// </summary>
|
||||
|
LTE_NR |
||||
|
} |
Loading…
Reference in new issue