diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-01-24 14:03:55 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-01-24 14:03:55 -0500 |
| commit | ee00f8bf726ae5498d64cff0086b9b7e638936ea (patch) | |
| tree | 710a5b4b715e5fbf1574bc072c4f299e7c9826ff /MediaBrowser.Common.Implementations | |
| parent | 1af651bc56025935cebe2762d6f36be41530eba1 (diff) | |
added HasSyncJob
Diffstat (limited to 'MediaBrowser.Common.Implementations')
| -rw-r--r-- | MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs | 53 | ||||
| -rw-r--r-- | MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs | 6 |
2 files changed, 59 insertions, 0 deletions
diff --git a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs index bf6ebf7ef..660ac09f9 100644 --- a/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs +++ b/MediaBrowser.Common.Implementations/Networking/BaseNetworkManager.cs @@ -18,12 +18,65 @@ namespace MediaBrowser.Common.Implementations.Networking Logger = logger; } + private volatile List<string> _localIpAddresses; + private readonly object _localIpAddressSyncLock = new object(); + /// <summary> /// Gets the machine's local ip address /// </summary> /// <returns>IPAddress.</returns> public IEnumerable<string> GetLocalIpAddresses() { + if (_localIpAddresses == null) + { + lock (_localIpAddressSyncLock) + { + if (_localIpAddresses == null) + { + var addresses = GetLocalIpAddressesInternal().ToList(); + + _localIpAddresses = addresses; + BindEvents(); + + return addresses; + } + } + } + + return _localIpAddresses; + } + + private void BindEvents() + { + NetworkChange.NetworkAddressChanged -= NetworkChange_NetworkAddressChanged; + NetworkChange.NetworkAvailabilityChanged -= NetworkChange_NetworkAvailabilityChanged; + + NetworkChange.NetworkAddressChanged += NetworkChange_NetworkAddressChanged; + NetworkChange.NetworkAvailabilityChanged += NetworkChange_NetworkAvailabilityChanged; + } + + void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e) + { + Logger.Debug("NetworkAvailabilityChanged fired. Resetting cached network info."); + + lock (_localIpAddressSyncLock) + { + _localIpAddresses = null; + } + } + + void NetworkChange_NetworkAddressChanged(object sender, EventArgs e) + { + Logger.Debug("NetworkAddressChanged fired. Resetting cached network info."); + + lock (_localIpAddressSyncLock) + { + _localIpAddresses = null; + } + } + + private IEnumerable<string> GetLocalIpAddressesInternal() + { var list = GetIPsDefault() .Where(i => !IPAddress.IsLoopback(i)) .Select(i => i.ToString()) diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs index 0dc67f8c0..5e9038500 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs @@ -544,6 +544,12 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks Id = Id }; + var hasKey = ScheduledTask as IHasKey; + if (hasKey != null) + { + result.Key = hasKey.Key; + } + if (ex != null) { result.ErrorMessage = ex.Message; |
