aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs')
-rw-r--r--MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs65
1 files changed, 65 insertions, 0 deletions
diff --git a/MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs b/MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs
index a16ea863f..600d9e405 100644
--- a/MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs
+++ b/MediaBrowser.Api/WebSocket/SessionInfoWebSocketListener.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Common.Net;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Session;
@@ -36,6 +37,49 @@ namespace MediaBrowser.Api.WebSocket
: base(logger)
{
_sessionManager = sessionManager;
+
+ _sessionManager.SessionStarted += _sessionManager_SessionStarted;
+ _sessionManager.SessionEnded += _sessionManager_SessionEnded;
+ _sessionManager.PlaybackStart += _sessionManager_PlaybackStart;
+ _sessionManager.PlaybackStopped += _sessionManager_PlaybackStopped;
+ _sessionManager.PlaybackProgress += _sessionManager_PlaybackProgress;
+ _sessionManager.CapabilitiesChanged += _sessionManager_CapabilitiesChanged;
+ _sessionManager.SessionActivity += _sessionManager_SessionActivity;
+ }
+
+ void _sessionManager_SessionActivity(object sender, SessionEventArgs e)
+ {
+ SendData(false);
+ }
+
+ void _sessionManager_CapabilitiesChanged(object sender, SessionEventArgs e)
+ {
+ SendData(true);
+ }
+
+ void _sessionManager_PlaybackProgress(object sender, PlaybackProgressEventArgs e)
+ {
+ SendData(false);
+ }
+
+ void _sessionManager_PlaybackStopped(object sender, PlaybackStopEventArgs e)
+ {
+ SendData(true);
+ }
+
+ void _sessionManager_PlaybackStart(object sender, PlaybackProgressEventArgs e)
+ {
+ SendData(true);
+ }
+
+ void _sessionManager_SessionEnded(object sender, SessionEventArgs e)
+ {
+ SendData(true);
+ }
+
+ void _sessionManager_SessionStarted(object sender, SessionEventArgs e)
+ {
+ SendData(true);
}
/// <summary>
@@ -47,5 +91,26 @@ namespace MediaBrowser.Api.WebSocket
{
return Task.FromResult(_sessionManager.Sessions.Where(i => i.IsActive).Select(_sessionManager.GetSessionInfoDto));
}
+
+ protected override bool SendOnTimer
+ {
+ get
+ {
+ return false;
+ }
+ }
+
+ protected override void Dispose(bool dispose)
+ {
+ _sessionManager.SessionStarted -= _sessionManager_SessionStarted;
+ _sessionManager.SessionEnded -= _sessionManager_SessionEnded;
+ _sessionManager.PlaybackStart -= _sessionManager_PlaybackStart;
+ _sessionManager.PlaybackStopped -= _sessionManager_PlaybackStopped;
+ _sessionManager.PlaybackProgress -= _sessionManager_PlaybackProgress;
+ _sessionManager.CapabilitiesChanged -= _sessionManager_CapabilitiesChanged;
+ _sessionManager.SessionActivity -= _sessionManager_SessionActivity;
+
+ base.Dispose(dispose);
+ }
}
}