using System; using System.Net; namespace ScreenConnect; public static class DataObject { private static readonly byte[] TempIPv4Array = new byte[4]; private static readonly byte[] TempIPv6Array = new byte[16]; public static IPAddress GetIPAddress(byte[] addressBytes) { return GetIPAddress(addressBytes.ToArraySegment()); } public static IPAddress GetIPAddress(ArraySegment addressBytes) { return Extensions.TryGet(() => new IPAddress(Extensions.ToArray(addressBytes)), IPAddress.Any); } public static HardwareAddress GetHardwareAddress(ArraySegment addressBytes) { return new HardwareAddress(Extensions.ToArray(addressBytes)); } public static CoreVersion GetVersion(string? versionString) { if (versionString.IsNullOrEmpty()) { return CoreVersion.None; } CoreVersion.ParseToValue(versionString, out var value, out var willRoundtripCorrectly); return GetVersion(value, willRoundtripCorrectly ? versionString : null); } public static CoreVersion GetVersion(Version version) { return GetVersion(CoreVersion.GetValue((ushort)version.Major, (ushort)version.Minor, (ushort)version.Build, (ushort)version.Revision), null); } public static CoreVersion GetVersion(ushort major, ushort minor, ushort build = 0, ushort revision = 0) { return GetVersion(CoreVersion.GetValue(major, minor, build, revision), null); } public static CoreVersion GetVersion(ulong value) { return GetVersion(value, null); } private static CoreVersion GetVersion(ulong value, string? toStringCache) { return new CoreVersion(value, toStringCache); } }