GiantsTools/Giants.Services/Core/Entities/ServerInfo.cs

36 lines
1.0 KiB
C#

namespace Giants.Services
{
using System;
public class ServerInfo : DataContract.V1.ServerInfo, IIdentifiable
{
public string id => $"{this.HostIpAddress}-{this.GameName}-{this.Port}";
public string DocumentType => nameof(ServerInfo);
public string HostIpAddress { get; set; }
public DateTime LastHeartbeat { get; set; }
public override bool Equals(object obj)
{
return obj is ServerInfo info &&
base.Equals(obj) &&
this.HostIpAddress == info.HostIpAddress &&
this.Port == info.Port &&
this.GameName == info.GameName &&
this.DocumentType == info.DocumentType;
}
public override int GetHashCode()
{
HashCode hash = new HashCode();
hash.Add(base.GetHashCode());
hash.Add(this.id);
hash.Add(this.HostIpAddress);
hash.Add(this.DocumentType);
return hash.ToHashCode();
}
}
}