Merge pull request #4137 from BaronGreenback/Comment2
DLNA ConnectionManager - static and commented.
This commit is contained in:
commit
75d4a573a3
|
@ -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; }
|
/// <summary>
|
||||||
|
/// Gets or sets a value indicating whether whether detailed playTo debug logs are sent to the console/log.
|
||||||
public bool SendOnlyMatchedHost { get; set; }
|
/// 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 />
|
||||||
|
|
|
@ -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>();
|
var list = new List<StateVariable>
|
||||||
|
|
||||||
list.Add(new StateVariable
|
|
||||||
{
|
{
|
||||||
Name = "SourceProtocolInfo",
|
new StateVariable
|
||||||
DataType = "string",
|
{
|
||||||
SendsEvents = true
|
Name = "SourceProtocolInfo",
|
||||||
});
|
DataType = "string",
|
||||||
|
SendsEvents = true
|
||||||
|
},
|
||||||
|
|
||||||
list.Add(new StateVariable
|
new StateVariable
|
||||||
{
|
{
|
||||||
Name = "SinkProtocolInfo",
|
Name = "SinkProtocolInfo",
|
||||||
DataType = "string",
|
DataType = "string",
|
||||||
SendsEvents = true
|
SendsEvents = true
|
||||||
});
|
},
|
||||||
|
|
||||||
list.Add(new StateVariable
|
new StateVariable
|
||||||
{
|
{
|
||||||
Name = "CurrentConnectionIDs",
|
Name = "CurrentConnectionIDs",
|
||||||
DataType = "string",
|
DataType = "string",
|
||||||
SendsEvents = true
|
SendsEvents = true
|
||||||
});
|
},
|
||||||
|
|
||||||
list.Add(new StateVariable
|
new StateVariable
|
||||||
{
|
{
|
||||||
Name = "A_ARG_TYPE_ConnectionStatus",
|
Name = "A_ARG_TYPE_ConnectionStatus",
|
||||||
DataType = "string",
|
DataType = "string",
|
||||||
SendsEvents = false,
|
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
|
new StateVariable
|
||||||
{
|
{
|
||||||
Name = "A_ARG_TYPE_ConnectionManager",
|
Name = "A_ARG_TYPE_ConnectionManager",
|
||||||
DataType = "string",
|
DataType = "string",
|
||||||
SendsEvents = false
|
SendsEvents = false
|
||||||
});
|
},
|
||||||
|
|
||||||
list.Add(new StateVariable
|
new StateVariable
|
||||||
{
|
{
|
||||||
Name = "A_ARG_TYPE_Direction",
|
Name = "A_ARG_TYPE_Direction",
|
||||||
DataType = "string",
|
DataType = "string",
|
||||||
SendsEvents = false,
|
SendsEvents = false,
|
||||||
|
|
||||||
AllowedValues = new[]
|
AllowedValues = new[]
|
||||||
{
|
{
|
||||||
"Output",
|
"Output",
|
||||||
"Input"
|
"Input"
|
||||||
}
|
}
|
||||||
});
|
},
|
||||||
|
|
||||||
list.Add(new StateVariable
|
new StateVariable
|
||||||
{
|
{
|
||||||
Name = "A_ARG_TYPE_ProtocolInfo",
|
Name = "A_ARG_TYPE_ProtocolInfo",
|
||||||
DataType = "string",
|
DataType = "string",
|
||||||
SendsEvents = false
|
SendsEvents = false
|
||||||
});
|
},
|
||||||
|
|
||||||
list.Add(new StateVariable
|
new StateVariable
|
||||||
{
|
{
|
||||||
Name = "A_ARG_TYPE_ConnectionID",
|
Name = "A_ARG_TYPE_ConnectionID",
|
||||||
DataType = "ui4",
|
DataType = "ui4",
|
||||||
SendsEvents = false
|
SendsEvents = false
|
||||||
});
|
},
|
||||||
|
|
||||||
list.Add(new StateVariable
|
new StateVariable
|
||||||
{
|
{
|
||||||
Name = "A_ARG_TYPE_AVTransportID",
|
Name = "A_ARG_TYPE_AVTransportID",
|
||||||
DataType = "ui4",
|
DataType = "ui4",
|
||||||
SendsEvents = false
|
SendsEvents = false
|
||||||
});
|
},
|
||||||
|
|
||||||
list.Add(new StateVariable
|
new StateVariable
|
||||||
{
|
{
|
||||||
Name = "A_ARG_TYPE_RcsID",
|
Name = "A_ARG_TYPE_RcsID",
|
||||||
DataType = "ui4",
|
DataType = "ui4",
|
||||||
SendsEvents = false
|
SendsEvents = false
|
||||||
});
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user