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