Browse Source

Merge pull request #4137 from BaronGreenback/Comment2

DLNA ConnectionManager - static and commented.
Joshua M. Boniface 4 years ago
parent
commit
75d4a573a3

+ 64 - 5
Emby.Dlna/Configuration/DlnaOptions.cs

@@ -2,8 +2,14 @@
 
 
 namespace Emby.Dlna.Configuration
 namespace Emby.Dlna.Configuration
 {
 {
+    /// <summary>
+    /// The DlnaOptions class contains the user definable parameters for the dlna subsystems.
+    /// </summary>
     public class DlnaOptions
     public class DlnaOptions
     {
     {
+        /// <summary>
+        /// Initializes a new instance of the <see cref="DlnaOptions"/> class.
+        /// </summary>
         public DlnaOptions()
         public DlnaOptions()
         {
         {
             EnablePlayTo = true;
             EnablePlayTo = true;
@@ -11,23 +17,76 @@ namespace Emby.Dlna.Configuration
             BlastAliveMessages = true;
             BlastAliveMessages = true;
             SendOnlyMatchedHost = true;
             SendOnlyMatchedHost = true;
             ClientDiscoveryIntervalSeconds = 60;
             ClientDiscoveryIntervalSeconds = 60;
-            BlastAliveMessageIntervalSeconds = 1800;
+            AliveMessageIntervalSeconds = 1800;
         }
         }
 
 
+        /// <summary>
+        /// Gets or sets a value indicating whether gets or sets a value to indicate the status of the dlna playTo subsystem.
+        /// </summary>
         public bool EnablePlayTo { get; set; }
         public bool EnablePlayTo { get; set; }
 
 
+        /// <summary>
+        /// Gets or sets a value indicating whether gets or sets a value to indicate the status of the dlna server subsystem.
+        /// </summary>
         public bool EnableServer { get; set; }
         public bool EnableServer { get; set; }
 
 
+        /// <summary>
+        /// Gets or sets a value indicating whether detailed dlna server logs are sent to the console/log.
+        /// If the setting "Emby.Dlna": "Debug" msut be set in logging.default.json for this property to work.
+        /// </summary>
         public bool EnableDebugLog { get; set; }
         public bool EnableDebugLog { get; set; }
 
 
-        public bool BlastAliveMessages { get; set; }
-
-        public bool SendOnlyMatchedHost { get; set; }
+        /// <summary>
+        /// Gets or sets a value indicating whether whether detailed playTo debug logs are sent to the console/log.
+        /// If the setting "Emby.Dlna.PlayTo": "Debug" msut be set in logging.default.json for this property to work.
+        /// </summary>
+        public bool EnablePlayToTracing { get; set; }
 
 
+        /// <summary>
+        /// Gets or sets the ssdp client discovery interval time (in seconds).
+        /// This is the time after which the server will send a ssdp search request.
+        /// </summary>
         public int ClientDiscoveryIntervalSeconds { get; set; }
         public int ClientDiscoveryIntervalSeconds { get; set; }
 
 
-        public int BlastAliveMessageIntervalSeconds { get; set; }
+        /// <summary>
+        /// Gets or sets the frequency at which ssdp alive notifications are transmitted.
+        /// </summary>
+        public int AliveMessageIntervalSeconds { get; set; }
+
+        /// <summary>
+        /// Gets or sets the frequency at which ssdp alive notifications are transmitted. MIGRATING - TO BE REMOVED ONCE WEB HAS BEEN ALTERED.
+        /// </summary>
+        public int BlastAliveMessageIntervalSeconds
+        {
+            get
+            {
+                return AliveMessageIntervalSeconds;
+            }
+
+            set
+            {
+                AliveMessageIntervalSeconds = value;
+            }
+        }
 
 
+        /// <summary>
+        /// Gets or sets the default user account that the dlna server uses.
+        /// </summary>
         public string DefaultUserId { get; set; }
         public string DefaultUserId { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether playTo device profiles should be created.
+        /// </summary>
+        public bool AutoCreatePlayToProfiles { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether to blast alive messages.
+        /// </summary>
+        public bool BlastAliveMessages { get; set; } = true;
+
+        /// <summary>
+        /// gets or sets a value indicating whether to send only matched host.
+        /// </summary>
+        public bool SendOnlyMatchedHost { get; set; } = true;
     }
     }
 }
 }

+ 11 - 1
Emby.Dlna/ConnectionManager/ConnectionManagerService.cs

@@ -9,11 +9,21 @@ using Microsoft.Extensions.Logging;
 
 
 namespace Emby.Dlna.ConnectionManager
 namespace Emby.Dlna.ConnectionManager
 {
 {
+    /// <summary>
+    /// Defines the <see cref="ConnectionManagerService" />.
+    /// </summary>
     public class ConnectionManagerService : BaseService, IConnectionManager
     public class ConnectionManagerService : BaseService, IConnectionManager
     {
     {
         private readonly IDlnaManager _dlna;
         private readonly IDlnaManager _dlna;
         private readonly IServerConfigurationManager _config;
         private readonly IServerConfigurationManager _config;
 
 
+        /// <summary>
+        /// Initializes a new instance of the <see cref="ConnectionManagerService"/> class.
+        /// </summary>
+        /// <param name="dlna">The <see cref="IDlnaManager"/> for use with the <see cref="ConnectionManagerService"/> instance.</param>
+        /// <param name="config">The <see cref="IServerConfigurationManager"/> for use with the <see cref="ConnectionManagerService"/> instance.</param>
+        /// <param name="logger">The <see cref="ILogger{ConnectionManagerService}"/> for use with the <see cref="ConnectionManagerService"/> instance..</param>
+        /// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/> for use with the <see cref="ConnectionManagerService"/> instance..</param>
         public ConnectionManagerService(
         public ConnectionManagerService(
             IDlnaManager dlna,
             IDlnaManager dlna,
             IServerConfigurationManager config,
             IServerConfigurationManager config,
@@ -28,7 +38,7 @@ namespace Emby.Dlna.ConnectionManager
         /// <inheritdoc />
         /// <inheritdoc />
         public string GetServiceXml()
         public string GetServiceXml()
         {
         {
-            return new ConnectionManagerXmlBuilder().GetXml();
+            return ConnectionManagerXmlBuilder.GetXml();
         }
         }
 
 
         /// <inheritdoc />
         /// <inheritdoc />

+ 79 - 66
Emby.Dlna/ConnectionManager/ConnectionManagerXmlBuilder.cs

@@ -6,45 +6,57 @@ using Emby.Dlna.Service;
 
 
 namespace Emby.Dlna.ConnectionManager
 namespace Emby.Dlna.ConnectionManager
 {
 {
-    public class ConnectionManagerXmlBuilder
+    /// <summary>
+    /// Defines the <see cref="ConnectionManagerXmlBuilder" />.
+    /// </summary>
+    public static class ConnectionManagerXmlBuilder
     {
     {
-        public string GetXml()
+        /// <summary>
+        /// Gets the ConnectionManager:1 service template.
+        /// See http://upnp.org/specs/av/UPnP-av-ConnectionManager-v1-Service.pdf.
+        /// </summary>
+        /// <returns>An XML description of this service.</returns>
+        public static string GetXml()
         {
         {
-            return new ServiceXmlBuilder().GetXml(new ServiceActionListBuilder().GetActions(), GetStateVariables());
+            return new ServiceXmlBuilder().GetXml(ServiceActionListBuilder.GetActions(), GetStateVariables());
         }
         }
 
 
+        /// <summary>
+        /// Get the list of state variables for this invocation.
+        /// </summary>
+        /// <returns>The <see cref="IEnumerable{StateVariable}"/>.</returns>
         private static IEnumerable<StateVariable> GetStateVariables()
         private static IEnumerable<StateVariable> GetStateVariables()
         {
         {
-            var list = new List<StateVariable>();
-
-            list.Add(new StateVariable
+            var list = new List<StateVariable>
             {
             {
-                Name = "SourceProtocolInfo",
-                DataType = "string",
-                SendsEvents = true
-            });
+                new StateVariable
+                {
+                    Name = "SourceProtocolInfo",
+                    DataType = "string",
+                    SendsEvents = true
+                },
 
 
-            list.Add(new StateVariable
-            {
-                Name = "SinkProtocolInfo",
-                DataType = "string",
-                SendsEvents = true
-            });
+                new StateVariable
+                {
+                    Name = "SinkProtocolInfo",
+                    DataType = "string",
+                    SendsEvents = true
+                },
 
 
-            list.Add(new StateVariable
-            {
-                Name = "CurrentConnectionIDs",
-                DataType = "string",
-                SendsEvents = true
-            });
+                new StateVariable
+                {
+                    Name = "CurrentConnectionIDs",
+                    DataType = "string",
+                    SendsEvents = true
+                },
 
 
-            list.Add(new StateVariable
-            {
-                Name = "A_ARG_TYPE_ConnectionStatus",
-                DataType = "string",
-                SendsEvents = false,
+                new StateVariable
+                {
+                    Name = "A_ARG_TYPE_ConnectionStatus",
+                    DataType = "string",
+                    SendsEvents = false,
 
 
-                AllowedValues = new[]
+                    AllowedValues = new[]
                 {
                 {
                     "OK",
                     "OK",
                     "ContentFormatMismatch",
                     "ContentFormatMismatch",
@@ -52,55 +64,56 @@ namespace Emby.Dlna.ConnectionManager
                     "UnreliableChannel",
                     "UnreliableChannel",
                     "Unknown"
                     "Unknown"
                 }
                 }
-            });
+                },
 
 
-            list.Add(new StateVariable
-            {
-                Name = "A_ARG_TYPE_ConnectionManager",
-                DataType = "string",
-                SendsEvents = false
-            });
+                new StateVariable
+                {
+                    Name = "A_ARG_TYPE_ConnectionManager",
+                    DataType = "string",
+                    SendsEvents = false
+                },
 
 
-            list.Add(new StateVariable
-            {
-                Name = "A_ARG_TYPE_Direction",
-                DataType = "string",
-                SendsEvents = false,
+                new StateVariable
+                {
+                    Name = "A_ARG_TYPE_Direction",
+                    DataType = "string",
+                    SendsEvents = false,
 
 
-                AllowedValues = new[]
+                    AllowedValues = new[]
                 {
                 {
                     "Output",
                     "Output",
                     "Input"
                     "Input"
                 }
                 }
-            });
+                },
 
 
-            list.Add(new StateVariable
-            {
-                Name = "A_ARG_TYPE_ProtocolInfo",
-                DataType = "string",
-                SendsEvents = false
-            });
+                new StateVariable
+                {
+                    Name = "A_ARG_TYPE_ProtocolInfo",
+                    DataType = "string",
+                    SendsEvents = false
+                },
 
 
-            list.Add(new StateVariable
-            {
-                Name = "A_ARG_TYPE_ConnectionID",
-                DataType = "ui4",
-                SendsEvents = false
-            });
+                new StateVariable
+                {
+                    Name = "A_ARG_TYPE_ConnectionID",
+                    DataType = "ui4",
+                    SendsEvents = false
+                },
 
 
-            list.Add(new StateVariable
-            {
-                Name = "A_ARG_TYPE_AVTransportID",
-                DataType = "ui4",
-                SendsEvents = false
-            });
+                new StateVariable
+                {
+                    Name = "A_ARG_TYPE_AVTransportID",
+                    DataType = "ui4",
+                    SendsEvents = false
+                },
 
 
-            list.Add(new StateVariable
-            {
-                Name = "A_ARG_TYPE_RcsID",
-                DataType = "ui4",
-                SendsEvents = false
-            });
+                new StateVariable
+                {
+                    Name = "A_ARG_TYPE_RcsID",
+                    DataType = "ui4",
+                    SendsEvents = false
+                }
+            };
 
 
             return list;
             return list;
         }
         }

+ 13 - 0
Emby.Dlna/ConnectionManager/ControlHandler.cs

@@ -11,10 +11,19 @@ using Microsoft.Extensions.Logging;
 
 
 namespace Emby.Dlna.ConnectionManager
 namespace Emby.Dlna.ConnectionManager
 {
 {
+    /// <summary>
+    /// Defines the <see cref="ControlHandler" />.
+    /// </summary>
     public class ControlHandler : BaseControlHandler
     public class ControlHandler : BaseControlHandler
     {
     {
         private readonly DeviceProfile _profile;
         private readonly DeviceProfile _profile;
 
 
+        /// <summary>
+        /// Initializes a new instance of the <see cref="ControlHandler"/> class.
+        /// </summary>
+        /// <param name="config">The <see cref="IServerConfigurationManager"/> for use with the <see cref="ControlHandler"/> instance.</param>
+        /// <param name="logger">The <see cref="ILogger"/> for use with the <see cref="ControlHandler"/> instance.</param>
+        /// <param name="profile">The <see cref="DeviceProfile"/> for use with the <see cref="ControlHandler"/> instance.</param>
         public ControlHandler(IServerConfigurationManager config, ILogger logger, DeviceProfile profile)
         public ControlHandler(IServerConfigurationManager config, ILogger logger, DeviceProfile profile)
             : base(config, logger)
             : base(config, logger)
         {
         {
@@ -33,6 +42,10 @@ namespace Emby.Dlna.ConnectionManager
             throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
             throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
         }
         }
 
 
+        /// <summary>
+        /// Builds the response to the GetProtocolInfo request.
+        /// </summary>
+        /// <param name="xmlWriter">The <see cref="XmlWriter"/>.</param>
         private void HandleGetProtocolInfo(XmlWriter xmlWriter)
         private void HandleGetProtocolInfo(XmlWriter xmlWriter)
         {
         {
             xmlWriter.WriteElementString("Source", _profile.ProtocolInfo);
             xmlWriter.WriteElementString("Source", _profile.ProtocolInfo);

+ 32 - 5
Emby.Dlna/ConnectionManager/ServiceActionListBuilder.cs

@@ -5,9 +5,16 @@ using Emby.Dlna.Common;
 
 
 namespace Emby.Dlna.ConnectionManager
 namespace Emby.Dlna.ConnectionManager
 {
 {
-    public class ServiceActionListBuilder
+    /// <summary>
+    /// Defines the <see cref="ServiceActionListBuilder" />.
+    /// </summary>
+    public static class ServiceActionListBuilder
     {
     {
-        public IEnumerable<ServiceAction> GetActions()
+        /// <summary>
+        /// Returns an enumerable of the ConnectionManagar:1 DLNA actions.
+        /// </summary>
+        /// <returns>An <see cref="IEnumerable{ServiceAction}"/>.</returns>
+        public static IEnumerable<ServiceAction> GetActions()
         {
         {
             var list = new List<ServiceAction>
             var list = new List<ServiceAction>
             {
             {
@@ -21,6 +28,10 @@ namespace Emby.Dlna.ConnectionManager
             return list;
             return list;
         }
         }
 
 
+        /// <summary>
+        /// Returns the action details for "PrepareForConnection".
+        /// </summary>
+        /// <returns>The <see cref="ServiceAction"/>.</returns>
         private static ServiceAction PrepareForConnection()
         private static ServiceAction PrepareForConnection()
         {
         {
             var action = new ServiceAction
             var action = new ServiceAction
@@ -80,6 +91,10 @@ namespace Emby.Dlna.ConnectionManager
             return action;
             return action;
         }
         }
 
 
+        /// <summary>
+        /// Returns the action details for "GetCurrentConnectionInfo".
+        /// </summary>
+        /// <returns>The <see cref="ServiceAction"/>.</returns>
         private static ServiceAction GetCurrentConnectionInfo()
         private static ServiceAction GetCurrentConnectionInfo()
         {
         {
             var action = new ServiceAction
             var action = new ServiceAction
@@ -146,7 +161,11 @@ namespace Emby.Dlna.ConnectionManager
             return action;
             return action;
         }
         }
 
 
-        private ServiceAction GetProtocolInfo()
+        /// <summary>
+        /// Returns the action details for "GetProtocolInfo".
+        /// </summary>
+        /// <returns>The <see cref="ServiceAction"/>.</returns>
+        private static ServiceAction GetProtocolInfo()
         {
         {
             var action = new ServiceAction
             var action = new ServiceAction
             {
             {
@@ -170,7 +189,11 @@ namespace Emby.Dlna.ConnectionManager
             return action;
             return action;
         }
         }
 
 
-        private ServiceAction GetCurrentConnectionIDs()
+        /// <summary>
+        /// Returns the action details for "GetCurrentConnectionIDs".
+        /// </summary>
+        /// <returns>The <see cref="ServiceAction"/>.</returns>
+        private static ServiceAction GetCurrentConnectionIDs()
         {
         {
             var action = new ServiceAction
             var action = new ServiceAction
             {
             {
@@ -187,7 +210,11 @@ namespace Emby.Dlna.ConnectionManager
             return action;
             return action;
         }
         }
 
 
-        private ServiceAction ConnectionComplete()
+        /// <summary>
+        /// Returns the action details for "ConnectionComplete".
+        /// </summary>
+        /// <returns>The <see cref="ServiceAction"/>.</returns>
+        private static ServiceAction ConnectionComplete()
         {
         {
             var action = new ServiceAction
             var action = new ServiceAction
             {
             {