JD2022-TU1/main/tools/framework/JD.Remoting/Gui/EngineConnectionSettings.cs

98 lines
3.1 KiB
C#

using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
using JD.Core;
namespace JD.Remoting.Gui
{
[Serializable]
public class EngineConnectionSettings : IEquatable<EngineConnectionSettings>, IXmlSerializable
{
//private const string _localhost = "127.0.0.1";
//private const string _defaultHostName = "Default PC Host";
private static readonly EndPointId _defaultEndPointId = new EndPointId("127.0.0.1", 1001);
private static readonly EngineConnectionSettings _default = new EngineConnectionSettings(1001, _defaultEndPointId.IP, PlatformId.PC, "Local host");
private static EngineConnectionSettings _lastSelected;
public EngineConnectionSettings()
{
Target = default(PlatformId);
EndPointId = _defaultEndPointId;
}
public EngineConnectionSettings(ushort port, string ip, PlatformId target, string connectionName)
{
EndPointId = new EndPointId(ip,port);
Target = target;
ConnectionName = connectionName;
}
public EndPointId EndPointId { get; set; }
public PlatformId Target { get; set; }
public string ConnectionName { get; set;}
public string Name
{
get
{
if (!string.IsNullOrEmpty(EndPointId.IP))
{
if (string.IsNullOrEmpty(ConnectionName))
{
return $"{EndPointId.IP} : {EndPointId.Port} - [{Target}]";
}
return $"{ConnectionName} ({EndPointId.IP}:{EndPointId.Port},{Target})";
}
return "Uninitialized ip adress";
}
}
public static EngineConnectionSettings Default
{
get { return _default; }
}
public static string Localhost
{
get { return _defaultEndPointId.IP; }
}
public static EngineConnectionSettings LastSelected
{
get { return _lastSelected; }
set { _lastSelected = value; }
}
public bool Equals(EngineConnectionSettings other)
{
return EndPointId.Equals(other.EndPointId) && (Target == other.Target);
}
#region Serialization
public void ReadXml(XmlReader reader)
{
ConnectionName = reader["ConnectionName"];
EndPointId = new EndPointId(reader["IP"], int.Parse(reader["Port"] ?? "0"));
Target = (PlatformId)Enum.Parse(typeof(PlatformId), reader["Target"] ?? "PC");
reader.Read();
}
public void WriteXml(XmlWriter writer)
{
writer.WriteAttributeString("ConnectionName", ConnectionName);
writer.WriteAttributeString("IP", EndPointId.IP);
writer.WriteAttributeString("Port", EndPointId.Port.ToString());
writer.WriteAttributeString("Target", Enum.GetName(typeof(PlatformId), Target) ?? "PC");
}
public XmlSchema GetSchema() { return null; }
#endregion
}
}