Beispiel #1
0
 public static HostsUpdateResult Added(HostsEntry entry)
 {
     return(new HostsUpdateResult(entry.HostName)
     {
         Status = HostsUpdateResultType.Added,
         NewAddress = entry.Address,
         OldAddress = IPAddress.None
     });
 }
Beispiel #2
0
 public static HostsUpdateResult Updated(HostsEntry entry, IPAddress newAddress)
 {
     return(new HostsUpdateResult(entry.HostName)
     {
         Status = HostsUpdateResultType.Updated,
         NewAddress = newAddress,
         OldAddress = entry.Address
     });
 }
Beispiel #3
0
 public static HostsUpdateResult NoChange(HostsEntry entry)
 {
     return(new HostsUpdateResult(entry.HostName)
     {
         Status = HostsUpdateResultType.Unchanged,
         NewAddress = entry.Address,
         OldAddress = entry.Address
     });
 }
Beispiel #4
0
        public HostsUpdateResult Upsert(IPAddress address, string hostName, string comment = null)
        {
            Guard.IsNotNullOrWhiteSpace(hostName, nameof(hostName));
            var existing = InternalEntries.SingleOrDefault(entry => entry.HostName == hostName);

            if (existing != null)
            {
                if (existing.Address.Equals(address))
                {
                    return(HostsUpdateResult.NoChange(existing));
                }
                InternalEntries.Remove(existing);
                InternalEntries.Add(new HostsEntry(address, hostName, comment));
                HasUnsavedChanges = true;
                return(HostsUpdateResult.Updated(existing, address));
            }
            var addedEntry = new HostsEntry(address, hostName, comment);

            InternalEntries.Add(addedEntry);
            HasUnsavedChanges = true;
            return(HostsUpdateResult.Added(addedEntry));
        }