aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Dlna/PlayTo/PlayToController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Dlna/PlayTo/PlayToController.cs')
-rw-r--r--MediaBrowser.Dlna/PlayTo/PlayToController.cs59
1 files changed, 28 insertions, 31 deletions
diff --git a/MediaBrowser.Dlna/PlayTo/PlayToController.cs b/MediaBrowser.Dlna/PlayTo/PlayToController.cs
index 34f657217..eb4eb3889 100644
--- a/MediaBrowser.Dlna/PlayTo/PlayToController.cs
+++ b/MediaBrowser.Dlna/PlayTo/PlayToController.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Session;
@@ -34,7 +33,7 @@ namespace MediaBrowser.Dlna.PlayTo
private readonly IUserManager _userManager;
private readonly IImageProcessor _imageProcessor;
- private readonly SsdpHandler _ssdpHandler;
+ private readonly DeviceDiscovery _deviceDiscovery;
private readonly string _serverAddress;
public bool IsSessionActive
@@ -52,7 +51,7 @@ namespace MediaBrowser.Dlna.PlayTo
private Timer _updateTimer;
- public PlayToController(SessionInfo session, ISessionManager sessionManager, IItemRepository itemRepository, ILibraryManager libraryManager, ILogger logger, IDlnaManager dlnaManager, IUserManager userManager, IImageProcessor imageProcessor, SsdpHandler ssdpHandler, string serverAddress)
+ public PlayToController(SessionInfo session, ISessionManager sessionManager, IItemRepository itemRepository, ILibraryManager libraryManager, ILogger logger, IDlnaManager dlnaManager, IUserManager userManager, IImageProcessor imageProcessor, string serverAddress, DeviceDiscovery deviceDiscovery)
{
_session = session;
_itemRepository = itemRepository;
@@ -61,8 +60,8 @@ namespace MediaBrowser.Dlna.PlayTo
_dlnaManager = dlnaManager;
_userManager = userManager;
_imageProcessor = imageProcessor;
- _ssdpHandler = ssdpHandler;
_serverAddress = serverAddress;
+ _deviceDiscovery = deviceDiscovery;
_logger = logger;
}
@@ -75,33 +74,12 @@ namespace MediaBrowser.Dlna.PlayTo
_device.MediaChanged += _device_MediaChanged;
_device.Start();
- _ssdpHandler.MessageReceived += _SsdpHandler_MessageReceived;
+ _deviceDiscovery.DeviceLeft += _deviceDiscovery_DeviceLeft;
_updateTimer = new Timer(updateTimer_Elapsed, null, 60000, 60000);
}
- private void updateTimer_Elapsed(object state)
- {
- if (DateTime.UtcNow >= _device.DateLastActivity.AddSeconds(120))
- {
- try
- {
- // Session is inactive, mark it for Disposal and don't start the elapsed timer.
- _sessionManager.ReportSessionEnded(_session.Id);
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error in ReportSessionEnded", ex);
- }
- }
- }
-
- private string GetServerAddress()
- {
- return _serverAddress;
- }
-
- void _SsdpHandler_MessageReceived(object sender, SsdpMessageEventArgs e)
+ void _deviceDiscovery_DeviceLeft(object sender, SsdpMessageEventArgs e)
{
string nts;
e.Headers.TryGetValue("NTS", out nts);
@@ -112,9 +90,7 @@ namespace MediaBrowser.Dlna.PlayTo
string nt;
if (!e.Headers.TryGetValue("NT", out nt)) nt = String.Empty;
- if (String.Equals(e.Method, "NOTIFY", StringComparison.OrdinalIgnoreCase) &&
- String.Equals(nts, "ssdp:byebye", StringComparison.OrdinalIgnoreCase) &&
- usn.IndexOf(_device.Properties.UUID, StringComparison.OrdinalIgnoreCase) != -1 &&
+ if ( usn.IndexOf(_device.Properties.UUID, StringComparison.OrdinalIgnoreCase) != -1 &&
!_disposed)
{
if (usn.IndexOf("MediaRenderer:", StringComparison.OrdinalIgnoreCase) != -1 ||
@@ -132,6 +108,27 @@ namespace MediaBrowser.Dlna.PlayTo
}
}
+ private void updateTimer_Elapsed(object state)
+ {
+ if (DateTime.UtcNow >= _device.DateLastActivity.AddSeconds(120))
+ {
+ try
+ {
+ // Session is inactive, mark it for Disposal and don't start the elapsed timer.
+ _sessionManager.ReportSessionEnded(_session.Id);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error in ReportSessionEnded", ex);
+ }
+ }
+ }
+
+ private string GetServerAddress()
+ {
+ return _serverAddress;
+ }
+
async void _device_MediaChanged(object sender, MediaChangedEventArgs e)
{
try
@@ -626,7 +623,7 @@ namespace MediaBrowser.Dlna.PlayTo
_device.PlaybackProgress -= _device_PlaybackProgress;
_device.PlaybackStopped -= _device_PlaybackStopped;
_device.MediaChanged -= _device_MediaChanged;
- _ssdpHandler.MessageReceived -= _SsdpHandler_MessageReceived;
+ _deviceDiscovery.DeviceLeft -= _deviceDiscovery_DeviceLeft;
DisposeUpdateTimer();