using System; namespace axXez.TS3.Protocol { /// Represents a virtual server entry returned by serverlist. public class VirtualServerInfo : TsEntity, IVirtualServer { /// Virtual server ID. [TsField("virtualserver_id")] public int ID { get; protected set; } /// UDP port the virtual server listens on for voice connections. [TsField("virtualserver_port")] public int Port { get; protected set; } /// Current status of the virtual server (e.g. "online", "offline"). [TsField("virtualserver_status")] public string Status { get; protected set; } /// Number of regular voice clients currently connected. [TsField("virtualserver_clientsonline")] public int ClientsOnline { get; protected set; } /// Number of query clients currently connected. [TsField("virtualserver_queryclientsonline")] public int QueryClientsOnline { get; protected set; } /// Maximum number of clients allowed on the server simultaneously. [TsField("virtualserver_maxclients")] public int MaxClients { get; protected set; } /// Time the virtual server has been running since last start, in seconds. [TsField("virtualserver_uptime")] public int UptimeSeconds { get; protected set; } /// Time the virtual server has been running since last start. public TimeSpan Uptime => TimeSpan.FromSeconds(UptimeSeconds); /// Display name of the virtual server. [TsField("virtualserver_name")] public string Name { get; protected set; } /// Whether the server starts automatically when the server process starts. [TsField("virtualserver_autostart")] public bool Autostart { get; protected set; } /// Machine ID used to identify the physical host when multiple servers share an instance. [TsField("virtualserver_machine_id")] public string MachineID { get; protected set; } /// Unique identifier of the virtual server. [TsField("virtualserver_unique_identifier")] public string UID { get; protected set; } internal VirtualServerInfo(TsDataEntry data) : base(data) { } /// public override string ToString() => $"VirtualServer[{ID}] {Name}"; /// public override int GetHashCode() => ID.GetHashCode(); /// public override bool Equals(object obj) => obj is VirtualServerInfo && ID.Equals((obj as VirtualServerInfo).ID); } }