refactor: 枚举移入Models目录,命名空间更新为Rainbow.Entity.Models
大石头 authored at 2026-07-02 12:54:58
1.92 KiB
RainbowBridge
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Rainbow.Services;

/// <summary>网口管理接口。各平台实现网口列表、状态和基本信息采集</summary>
public interface INetworkInterfaceManager
{
    /// <summary>获取所有网口信息</summary>
    /// <returns>网口信息列表</returns>
    Task<List<NetworkInterfaceInfo>> GetInterfacesAsync();

    /// <summary>获取指定网口信息</summary>
    /// <param name="name">网口名称</param>
    /// <returns>网口信息,未找到返回 null</returns>
    Task<NetworkInterfaceInfo?> GetInterfaceAsync(String name);

    /// <summary>启用网口</summary>
    /// <param name="name">网口名称</param>
    /// <returns>是否成功</returns>
    Task<Boolean> EnableAsync(String name);

    /// <summary>禁用网口</summary>
    /// <param name="name">网口名称</param>
    /// <returns>是否成功</returns>
    Task<Boolean> DisableAsync(String name);
}

/// <summary>网口信息 DTO</summary>
public class NetworkInterfaceInfo
{
    /// <summary>网口名称</summary>
    public String Name { get; set; } = String.Empty;

    /// <summary>MAC 地址</summary>
    public String Mac { get; set; } = String.Empty;

    /// <summary>IPv4 地址列表</summary>
    public List<String> IPv4Addresses { get; set; } = [];

    /// <summary>IPv6 地址列表</summary>
    public List<String> IPv6Addresses { get; set; } = [];

    /// <summary>网口状态(Up/Down/Unknown)</summary>
    public String Status { get; set; } = "Unknown";

    /// <summary>速率(Mbps),0 表示未知</summary>
    public Int64 Speed { get; set; }

    /// <summary>接收字节数</summary>
    public Int64 RxBytes { get; set; }

    /// <summary>发送字节数</summary>
    public Int64 TxBytes { get; set; }

    /// <summary>是否为物理网口(false 表示虚拟/隧道接口)</summary>
    public Boolean IsPhysical { get; set; }
}