98 lines
3.1 KiB
C#
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
|
|
}
|
|
}
|