From bba0c564c7f9db6a6d5d2b16b1c8ae453eeaed34 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 17 Oct 2016 12:35:29 -0400 Subject: remove dead interface objects --- MediaBrowser.Controller/Entities/BaseItem.cs | 2 +- .../Entities/BasePluginFolder.cs | 2 +- .../Entities/IByReferenceItem.cs | 12 ---------- .../Entities/IHasCriticRating.cs | 20 ---------------- .../Entities/IHasShortOverview.cs | 12 ---------- MediaBrowser.Controller/Entities/ILibraryItem.cs | 28 ---------------------- .../Entities/ImageSourceInfo.cs | 10 -------- MediaBrowser.Controller/Entities/Movies/Movie.cs | 2 +- MediaBrowser.Controller/Entities/TV/Season.cs | 2 +- MediaBrowser.Controller/Entities/Trailer.cs | 2 +- .../Entities/UserViewBuilder.cs | 11 +-------- MediaBrowser.Controller/Entities/Video.cs | 1 - MediaBrowser.Controller/LiveTv/LiveTvChannel.cs | 11 +++++---- .../MediaBrowser.Controller.csproj | 5 ---- .../Providers/BaseItemXmlParser.cs | 20 ++++------------ .../Providers/DynamicImageResponse.cs | 1 - .../Providers/IProviderManager.cs | 22 +---------------- 17 files changed, 18 insertions(+), 145 deletions(-) delete mode 100644 MediaBrowser.Controller/Entities/IByReferenceItem.cs delete mode 100644 MediaBrowser.Controller/Entities/IHasCriticRating.cs delete mode 100644 MediaBrowser.Controller/Entities/IHasShortOverview.cs delete mode 100644 MediaBrowser.Controller/Entities/ILibraryItem.cs delete mode 100644 MediaBrowser.Controller/Entities/ImageSourceInfo.cs (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 3ebefa2170..e1a7741c94 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -33,7 +33,7 @@ namespace MediaBrowser.Controller.Entities /// /// Class BaseItem /// - public abstract class BaseItem : IHasProviderIds, ILibraryItem, IHasImages, IHasUserData, IHasMetadata, IHasLookupInfo + public abstract class BaseItem : IHasProviderIds, IHasImages, IHasUserData, IHasMetadata, IHasLookupInfo { protected BaseItem() { diff --git a/MediaBrowser.Controller/Entities/BasePluginFolder.cs b/MediaBrowser.Controller/Entities/BasePluginFolder.cs index 5a1ad6b157..bd109af7a7 100644 --- a/MediaBrowser.Controller/Entities/BasePluginFolder.cs +++ b/MediaBrowser.Controller/Entities/BasePluginFolder.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Entities /// Plugins derive from and export this class to create a folder that will appear in the root along /// with all the other actual physical folders in the system. /// - public abstract class BasePluginFolder : Folder, ICollectionFolder, IByReferenceItem + public abstract class BasePluginFolder : Folder, ICollectionFolder { public virtual string CollectionType { diff --git a/MediaBrowser.Controller/Entities/IByReferenceItem.cs b/MediaBrowser.Controller/Entities/IByReferenceItem.cs deleted file mode 100644 index b071473e11..0000000000 --- a/MediaBrowser.Controller/Entities/IByReferenceItem.cs +++ /dev/null @@ -1,12 +0,0 @@ - -namespace MediaBrowser.Controller.Entities -{ - /// - /// This is a marker class that tells us that a particular item type may be physically resolved - /// more than once within the library and we need to be sure to resolve them all to the same - /// instance of that item. - /// - public interface IByReferenceItem - { - } -} diff --git a/MediaBrowser.Controller/Entities/IHasCriticRating.cs b/MediaBrowser.Controller/Entities/IHasCriticRating.cs deleted file mode 100644 index d2b93759d8..0000000000 --- a/MediaBrowser.Controller/Entities/IHasCriticRating.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace MediaBrowser.Controller.Entities -{ - /// - /// Interface IHasCriticRating - /// - public interface IHasCriticRating - { - /// - /// Gets or sets the critic rating. - /// - /// The critic rating. - float? CriticRating { get; set; } - - /// - /// Gets or sets the critic rating summary. - /// - /// The critic rating summary. - string CriticRatingSummary { get; set; } - } -} diff --git a/MediaBrowser.Controller/Entities/IHasShortOverview.cs b/MediaBrowser.Controller/Entities/IHasShortOverview.cs deleted file mode 100644 index 437201faaf..0000000000 --- a/MediaBrowser.Controller/Entities/IHasShortOverview.cs +++ /dev/null @@ -1,12 +0,0 @@ - -namespace MediaBrowser.Controller.Entities -{ - public interface IHasShortOverview - { - /// - /// Gets or sets the short overview. - /// - /// The short overview. - string ShortOverview { get; set; } - } -} diff --git a/MediaBrowser.Controller/Entities/ILibraryItem.cs b/MediaBrowser.Controller/Entities/ILibraryItem.cs deleted file mode 100644 index b2f39608f3..0000000000 --- a/MediaBrowser.Controller/Entities/ILibraryItem.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; - -namespace MediaBrowser.Controller.Entities -{ - /// - /// Interface ILibraryItem - /// - public interface ILibraryItem - { - /// - /// Gets the name. - /// - /// The name. - string Name { get; } - - /// - /// Gets the id. - /// - /// The id. - Guid Id { get; } - - /// - /// Gets the path. - /// - /// The path. - string Path { get; } - } -} diff --git a/MediaBrowser.Controller/Entities/ImageSourceInfo.cs b/MediaBrowser.Controller/Entities/ImageSourceInfo.cs deleted file mode 100644 index 6dc072431c..0000000000 --- a/MediaBrowser.Controller/Entities/ImageSourceInfo.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; - -namespace MediaBrowser.Controller.Entities -{ - public class ImageSourceInfo - { - public Guid ImagePathMD5 { get; set; } - public Guid ImageUrlMD5 { get; set; } - } -} diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index dea42c463a..f13adb21c7 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -15,7 +15,7 @@ namespace MediaBrowser.Controller.Entities.Movies /// /// Class Movie /// - public class Movie : Video, IHasCriticRating, IHasSpecialFeatures, IHasBudget, IHasTrailers, IHasAwards, IHasMetascore, IHasLookupInfo, ISupportsBoxSetGrouping, IHasOriginalTitle + public class Movie : Video, IHasSpecialFeatures, IHasBudget, IHasTrailers, IHasAwards, IHasMetascore, IHasLookupInfo, ISupportsBoxSetGrouping, IHasOriginalTitle { public List SpecialFeatureIds { get; set; } diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs index 62af141593..ce13f5fc5f 100644 --- a/MediaBrowser.Controller/Entities/TV/Season.cs +++ b/MediaBrowser.Controller/Entities/TV/Season.cs @@ -36,7 +36,7 @@ namespace MediaBrowser.Controller.Entities.TV { get { - return true; + return false; } } diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index 0bcd5c14e8..0780cfec5e 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -10,7 +10,7 @@ namespace MediaBrowser.Controller.Entities /// /// Class Trailer /// - public class Trailer : Video, IHasCriticRating, IHasBudget, IHasMetascore, IHasOriginalTitle, IHasLookupInfo + public class Trailer : Video, IHasBudget, IHasMetascore, IHasOriginalTitle, IHasLookupInfo { public Trailer() { diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 3b7e3c5d29..38397572e3 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -1668,16 +1668,7 @@ namespace MediaBrowser.Controller.Entities { var val = query.MinCriticRating.Value; - var hasCriticRating = item as IHasCriticRating; - - if (hasCriticRating != null) - { - if (!(hasCriticRating.CriticRating.HasValue && hasCriticRating.CriticRating >= val)) - { - return false; - } - } - else + if (!(item.CriticRating.HasValue && item.CriticRating >= val)) { return false; } diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index e87b726b23..78d7a7fdd9 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -24,7 +24,6 @@ namespace MediaBrowser.Controller.Entities IHasAspectRatio, ISupportsPlaceHolders, IHasMediaSources, - IHasShortOverview, IThemeMedia { [IgnoreDataMember] diff --git a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs index 610d4b6f8a..5e99d6fa3f 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs @@ -78,14 +78,17 @@ namespace MediaBrowser.Controller.LiveTv protected override string CreateSortName() { - double number = 0; - if (!string.IsNullOrEmpty(Number)) { - double.TryParse(Number, NumberStyles.Any, CultureInfo.InvariantCulture, out number); + double number = 0; + + if (double.TryParse(Number, NumberStyles.Any, CultureInfo.InvariantCulture, out number)) + { + return number.ToString("00000-") + (Name ?? string.Empty); + } } - return number.ToString("00000-") + (Name ?? string.Empty); + return Number + "-" + (Name ?? string.Empty); } [IgnoreDataMember] diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 11ed0f6741..a8062af19f 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -132,10 +132,8 @@ - - @@ -146,15 +144,12 @@ - - - diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 13d43eee67..931af293cc 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -185,14 +185,12 @@ namespace MediaBrowser.Controller.Providers { var text = reader.ReadElementContentAsString(); - var hasCriticRating = item as IHasCriticRating; - - if (hasCriticRating != null && !string.IsNullOrEmpty(text)) + if (!string.IsNullOrEmpty(text)) { float value; if (float.TryParse(text, NumberStyles.Any, _usCulture, out value)) { - hasCriticRating.CriticRating = value; + item.CriticRating = value; } } @@ -292,12 +290,7 @@ namespace MediaBrowser.Controller.Providers if (!string.IsNullOrWhiteSpace(val)) { - var hasShortOverview = item as IHasShortOverview; - - if (hasShortOverview != null) - { - hasShortOverview.ShortOverview = val; - } + item.ShortOverview = val; } break; @@ -309,12 +302,7 @@ namespace MediaBrowser.Controller.Providers if (!string.IsNullOrWhiteSpace(val)) { - var hasCriticRating = item as IHasCriticRating; - - if (hasCriticRating != null) - { - hasCriticRating.CriticRatingSummary = val; - } + item.CriticRatingSummary = val; } break; diff --git a/MediaBrowser.Controller/Providers/DynamicImageResponse.cs b/MediaBrowser.Controller/Providers/DynamicImageResponse.cs index fdd1891ed6..d19a28a24c 100644 --- a/MediaBrowser.Controller/Providers/DynamicImageResponse.cs +++ b/MediaBrowser.Controller/Providers/DynamicImageResponse.cs @@ -12,7 +12,6 @@ namespace MediaBrowser.Controller.Providers public Stream Stream { get; set; } public ImageFormat Format { get; set; } public bool HasImage { get; set; } - public string InternalCacheKey { get; set; } public void SetFormatFromMimeType(string mimeType) { diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs index d3e5685bb1..428651ed5b 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -69,28 +69,8 @@ namespace MediaBrowser.Controller.Providers /// /// Saves the image. /// - /// The item. - /// The source. - /// Type of the MIME. - /// The type. - /// Index of the image. - /// The internal cache key. - /// The cancellation token. - /// Task. - Task SaveImage(IHasImages item, Stream source, string mimeType, ImageType type, int? imageIndex, string internalCacheKey, CancellationToken cancellationToken); - - /// - /// Saves the image. - /// - /// The item. - /// The source. - /// Type of the MIME. - /// The type. - /// Index of the image. - /// The internal cache key. - /// The cancellation token. /// Task. - Task SaveImage(IHasImages item, string source, string mimeType, ImageType type, int? imageIndex, string internalCacheKey, CancellationToken cancellationToken); + Task SaveImage(IHasImages item, string source, string mimeType, ImageType type, int? imageIndex, bool? saveLocallyWithMedia, CancellationToken cancellationToken); /// /// Adds the metadata providers. -- cgit v1.2.3 From 7895b5457c5450864c3d8de4b0b35953420a4b5d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 19 Oct 2016 02:28:44 -0400 Subject: removed dead code --- MediaBrowser.Controller/Dlna/ISsdpHandler.cs | 8 - .../MediaBrowser.Controller.csproj | 1 - MediaBrowser.Dlna/MediaBrowser.Dlna.csproj | 4 - MediaBrowser.Dlna/Ssdp/Datagram.cs | 126 -------- MediaBrowser.Dlna/Ssdp/DeviceDiscoveryInfo.cs | 21 -- MediaBrowser.Dlna/Ssdp/Extensions.cs | 24 -- MediaBrowser.Dlna/Ssdp/SsdpHandler.cs | 328 --------------------- MediaBrowser.Dlna/Ssdp/SsdpMessageBuilder.cs | 26 -- 8 files changed, 538 deletions(-) delete mode 100644 MediaBrowser.Controller/Dlna/ISsdpHandler.cs delete mode 100644 MediaBrowser.Dlna/Ssdp/Datagram.cs delete mode 100644 MediaBrowser.Dlna/Ssdp/DeviceDiscoveryInfo.cs delete mode 100644 MediaBrowser.Dlna/Ssdp/SsdpHandler.cs delete mode 100644 MediaBrowser.Dlna/Ssdp/SsdpMessageBuilder.cs (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Dlna/ISsdpHandler.cs b/MediaBrowser.Controller/Dlna/ISsdpHandler.cs deleted file mode 100644 index ec3a00aad7..0000000000 --- a/MediaBrowser.Controller/Dlna/ISsdpHandler.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System; - -namespace MediaBrowser.Controller.Dlna -{ - public interface ISsdpHandler - { - } -} diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index a8062af19f..36d59d3e44 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -111,7 +111,6 @@ - diff --git a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj index ef60be227f..ebffe6c575 100644 --- a/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj +++ b/MediaBrowser.Dlna/MediaBrowser.Dlna.csproj @@ -108,7 +108,6 @@ - @@ -130,7 +129,6 @@ - @@ -160,8 +158,6 @@ - - diff --git a/MediaBrowser.Dlna/Ssdp/Datagram.cs b/MediaBrowser.Dlna/Ssdp/Datagram.cs deleted file mode 100644 index 5901945344..0000000000 --- a/MediaBrowser.Dlna/Ssdp/Datagram.cs +++ /dev/null @@ -1,126 +0,0 @@ -using MediaBrowser.Model.Logging; -using System; -using System.Net; -using System.Net.Sockets; -using System.Text; - -namespace MediaBrowser.Dlna.Ssdp -{ - public class Datagram - { - public EndPoint ToEndPoint { get; private set; } - public EndPoint FromEndPoint { get; private set; } - public string Message { get; private set; } - public bool IsBroadcast { get; private set; } - public bool EnableDebugLogging { get; private set; } - - private readonly ILogger _logger; - - public Datagram(EndPoint toEndPoint, EndPoint fromEndPoint, ILogger logger, string message, bool isBroadcast, bool enableDebugLogging) - { - Message = message; - _logger = logger; - EnableDebugLogging = enableDebugLogging; - IsBroadcast = isBroadcast; - FromEndPoint = fromEndPoint; - ToEndPoint = toEndPoint; - } - - public void Send() - { - var msg = Encoding.ASCII.GetBytes(Message); - - var socket = CreateSocket(); - - if (socket == null) - { - return; - } - - if (FromEndPoint != null) - { - try - { - socket.Bind(FromEndPoint); - } - catch (Exception ex) - { - if (EnableDebugLogging) - { - _logger.ErrorException("Error binding datagram socket", ex); - } - - if (IsBroadcast) - { - CloseSocket(socket, false); - return; - } - } - } - - try - { - socket.BeginSendTo(msg, 0, msg.Length, SocketFlags.None, ToEndPoint, result => - { - try - { - socket.EndSend(result); - } - catch (Exception ex) - { - if (EnableDebugLogging) - { - _logger.ErrorException("Error sending Datagram to {0} from {1}: " + Message, ex, ToEndPoint, FromEndPoint == null ? "" : FromEndPoint.ToString()); - } - } - finally - { - CloseSocket(socket, true); - } - }, null); - } - catch (Exception ex) - { - _logger.ErrorException("Error sending Datagram to {0} from {1}: " + Message, ex, ToEndPoint, FromEndPoint == null ? "" : FromEndPoint.ToString()); - CloseSocket(socket, false); - } - } - - private void CloseSocket(Socket socket, bool logError) - { - try - { - socket.Close(); - } - catch (Exception ex) - { - if (logError && EnableDebugLogging) - { - _logger.ErrorException("Error closing datagram socket", ex); - } - } - } - - private Socket CreateSocket() - { - try - { - var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); - socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); - socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 4); - - if (IsBroadcast) - { - socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); - } - - return socket; - } - catch (Exception ex) - { - _logger.ErrorException("Error creating socket", ex); - return null; - } - } - } -} diff --git a/MediaBrowser.Dlna/Ssdp/DeviceDiscoveryInfo.cs b/MediaBrowser.Dlna/Ssdp/DeviceDiscoveryInfo.cs deleted file mode 100644 index e9de45522b..0000000000 --- a/MediaBrowser.Dlna/Ssdp/DeviceDiscoveryInfo.cs +++ /dev/null @@ -1,21 +0,0 @@ -using MediaBrowser.Dlna.PlayTo; -using System; -using System.Net; - -namespace MediaBrowser.Dlna.Ssdp -{ - public class DeviceDiscoveryInfo - { - public Device Device { get; set; } - - /// - /// The server's ip address that the device responded to - /// - public IPAddress LocalIpAddress { get; set; } - - public Uri Uri { get; set; } - - public string Usn { get; set; } - public string Nt { get; set; } - } -} diff --git a/MediaBrowser.Dlna/Ssdp/Extensions.cs b/MediaBrowser.Dlna/Ssdp/Extensions.cs index 12589e80fe..17ebcc7ead 100644 --- a/MediaBrowser.Dlna/Ssdp/Extensions.cs +++ b/MediaBrowser.Dlna/Ssdp/Extensions.cs @@ -9,30 +9,6 @@ namespace MediaBrowser.Dlna.Ssdp { public static class Extensions { - public static Task ReceiveAsync(this Socket socket, byte[] buffer, int offset, int size) - { - var tcs = new TaskCompletionSource(socket); - var remoteip = new IPEndPoint(IPAddress.Any, 0); - var endpoint = (EndPoint)remoteip; - - socket.BeginReceiveFrom(buffer, offset, size, SocketFlags.None, ref endpoint, iar => - { - var result = (TaskCompletionSource)iar.AsyncState; - var iarSocket = (Socket)result.Task.AsyncState; - - try - { - result.TrySetResult(iarSocket.EndReceive(iar)); - } - catch (Exception exc) - { - result.TrySetException(exc); - } - }, tcs); - - return tcs.Task; - } - public static string GetValue(this XElement container, XName name) { var node = container.Element(name); diff --git a/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs b/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs deleted file mode 100644 index 0d0ca98a28..0000000000 --- a/MediaBrowser.Dlna/Ssdp/SsdpHandler.cs +++ /dev/null @@ -1,328 +0,0 @@ -using MediaBrowser.Common; -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Events; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Dlna; -using MediaBrowser.Dlna.Server; -using MediaBrowser.Model.Logging; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Net; -using System.Net.Sockets; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Win32; - -namespace MediaBrowser.Dlna.Ssdp -{ - public class SsdpHandler : IDisposable, ISsdpHandler - { - private Socket _multicastSocket; - - private readonly ILogger _logger; - private readonly IServerConfigurationManager _config; - - const string SSDPAddr = "239.255.255.250"; - const int SSDPPort = 1900; - private readonly string _serverSignature; - - private readonly IPAddress _ssdpIp = IPAddress.Parse(SSDPAddr); - private readonly IPEndPoint _ssdpEndp = new IPEndPoint(IPAddress.Parse(SSDPAddr), SSDPPort); - - private Timer _notificationTimer; - - private bool _isDisposed; - private readonly Dictionary> _devices = new Dictionary>(); - - private readonly IApplicationHost _appHost; - - private readonly int _unicastPort = 1901; - private UdpClient _unicastClient; - - public SsdpHandler(ILogger logger, IServerConfigurationManager config, IApplicationHost appHost) - { - _logger = logger; - _config = config; - _appHost = appHost; - - _config.NamedConfigurationUpdated += _config_ConfigurationUpdated; - _serverSignature = GenerateServerSignature(); - } - - private string GenerateServerSignature() - { - var os = Environment.OSVersion; - var pstring = os.Platform.ToString(); - switch (os.Platform) - { - case PlatformID.Win32NT: - case PlatformID.Win32S: - case PlatformID.Win32Windows: - pstring = "WIN"; - break; - } - - return String.Format( - "{0}{1}/{2}.{3} UPnP/1.0 DLNADOC/1.5 Emby/{4}", - pstring, - IntPtr.Size * 8, - os.Version.Major, - os.Version.Minor, - _appHost.ApplicationVersion - ); - } - - void _config_ConfigurationUpdated(object sender, ConfigurationUpdateEventArgs e) - { - if (string.Equals(e.Key, "dlna", StringComparison.OrdinalIgnoreCase)) - { - ReloadAliveNotifier(); - } - } - - public IEnumerable RegisteredDevices - { - get - { - lock (_devices) - { - var devices = _devices.ToList(); - - return devices.SelectMany(i => i.Value).ToList(); - } - } - } - - public void Start() - { - DisposeSocket(); - StopAliveNotifier(); - - RestartSocketListener(); - ReloadAliveNotifier(); - - SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; - SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; - } - - void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) - { - if (e.Mode == PowerModes.Resume) - { - Start(); - } - } - - public async void SendDatagram(string msg, - EndPoint endpoint, - EndPoint localAddress, - bool isBroadcast, - int sendCount = 3) - { - var enableDebugLogging = _config.GetDlnaConfiguration().EnableDebugLog; - - for (var i = 0; i < sendCount; i++) - { - if (i > 0) - { - await Task.Delay(500).ConfigureAwait(false); - } - - var dgram = new Datagram(endpoint, localAddress, _logger, msg, isBroadcast, enableDebugLogging); - dgram.Send(); - } - } - - private void RestartSocketListener() - { - if (_isDisposed) - { - return; - } - - try - { - _multicastSocket = CreateMulticastSocket(); - - _logger.Info("MultiCast socket created"); - } - catch (Exception ex) - { - _logger.ErrorException("Error creating MultiCast socket", ex); - //StartSocketRetryTimer(); - } - } - - public void Dispose() - { - _config.NamedConfigurationUpdated -= _config_ConfigurationUpdated; - SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged; - - _isDisposed = true; - - DisposeSocket(); - StopAliveNotifier(); - } - - private void DisposeSocket() - { - if (_multicastSocket != null) - { - _multicastSocket.Close(); - _multicastSocket.Dispose(); - _multicastSocket = null; - } - } - - private Socket CreateMulticastSocket() - { - var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); - socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); - socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); - socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 4); - socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(_ssdpIp, 0)); - - socket.Bind(new IPEndPoint(IPAddress.Any, SSDPPort)); - - return socket; - } - - private void NotifyAll() - { - var enableDebugLogging = _config.GetDlnaConfiguration().EnableDebugLog; - - if (enableDebugLogging) - { - _logger.Debug("Sending alive notifications"); - } - foreach (var d in RegisteredDevices) - { - NotifyDevice(d, "alive", enableDebugLogging); - } - } - - private void NotifyDevice(UpnpDevice dev, string type, bool logMessage) - { - const string header = "NOTIFY * HTTP/1.1"; - - var values = new Dictionary(StringComparer.OrdinalIgnoreCase); - - // If needed later for non-server devices, these headers will need to be dynamic - values["HOST"] = "239.255.255.250:1900"; - values["CACHE-CONTROL"] = "max-age = 600"; - values["LOCATION"] = dev.Descriptor.ToString(); - values["SERVER"] = _serverSignature; - values["NTS"] = "ssdp:" + type; - values["NT"] = dev.Type; - values["USN"] = dev.USN; - - if (logMessage) - { - _logger.Debug("{0} said {1}", dev.USN, type); - } - - var msg = new SsdpMessageBuilder().BuildMessage(header, values); - - SendDatagram(msg, _ssdpEndp, new IPEndPoint(dev.Address, 0), true, 2); - //SendUnicastRequest(msg, 1); - } - - public void RegisterNotification(string uuid, Uri descriptionUri, IPAddress address, IEnumerable services) - { - lock (_devices) - { - List list; - List dl; - if (_devices.TryGetValue(uuid, out dl)) - { - list = dl; - } - else - { - list = new List(); - _devices[uuid] = list; - } - - list.AddRange(services.Select(i => new UpnpDevice(uuid, i, descriptionUri, address))); - - NotifyAll(); - _logger.Debug("Registered mount {0} at {1}", uuid, descriptionUri); - } - } - - public void UnregisterNotification(string uuid) - { - lock (_devices) - { - List dl; - if (_devices.TryGetValue(uuid, out dl)) - { - _devices.Remove(uuid); - foreach (var d in dl.ToList()) - { - NotifyDevice(d, "byebye", true); - } - - _logger.Debug("Unregistered mount {0}", uuid); - } - } - } - - private readonly object _notificationTimerSyncLock = new object(); - private int _aliveNotifierIntervalMs; - private void ReloadAliveNotifier() - { - var config = _config.GetDlnaConfiguration(); - - if (!config.BlastAliveMessages) - { - StopAliveNotifier(); - return; - } - - var intervalMs = config.BlastAliveMessageIntervalSeconds * 1000; - - if (_notificationTimer == null || _aliveNotifierIntervalMs != intervalMs) - { - lock (_notificationTimerSyncLock) - { - if (_notificationTimer == null) - { - _logger.Debug("Starting alive notifier"); - const int initialDelayMs = 3000; - _notificationTimer = new Timer(state => NotifyAll(), null, initialDelayMs, intervalMs); - } - else - { - _logger.Debug("Updating alive notifier"); - _notificationTimer.Change(intervalMs, intervalMs); - } - - _aliveNotifierIntervalMs = intervalMs; - } - } - } - - private void StopAliveNotifier() - { - lock (_notificationTimerSyncLock) - { - if (_notificationTimer != null) - { - _logger.Debug("Stopping alive notifier"); - _notificationTimer.Dispose(); - _notificationTimer = null; - } - } - } - - public class UdpState - { - public UdpClient UdpClient; - public IPEndPoint EndPoint; - } - } -} diff --git a/MediaBrowser.Dlna/Ssdp/SsdpMessageBuilder.cs b/MediaBrowser.Dlna/Ssdp/SsdpMessageBuilder.cs deleted file mode 100644 index e479ca19a5..0000000000 --- a/MediaBrowser.Dlna/Ssdp/SsdpMessageBuilder.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Collections.Generic; -using System.Text; - -namespace MediaBrowser.Dlna.Ssdp -{ - public class SsdpMessageBuilder - { - public string BuildMessage(string header, Dictionary values) - { - var builder = new StringBuilder(); - - const string argFormat = "{0}: {1}\r\n"; - - builder.AppendFormat("{0}\r\n", header); - - foreach (var pair in values) - { - builder.AppendFormat(argFormat, pair.Key, pair.Value); - } - - builder.Append("\r\n"); - - return builder.ToString(); - } - } -} -- cgit v1.2.3