diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-30 11:05:07 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-30 11:05:07 -0400 |
| commit | 29fd559f0a87dfe4667293251397f8a758a3c826 (patch) | |
| tree | 053b1165953c94438ed6d9ae19fd68838f2144c8 /MediaBrowser.Server.Implementations/Session | |
| parent | f4f91a8316f46ea91dca6447bcff495b7c0f0b40 (diff) | |
made session a little more flexible for playing non-library items
Diffstat (limited to 'MediaBrowser.Server.Implementations/Session')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Session/SessionManager.cs | 56 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs | 20 |
2 files changed, 44 insertions, 32 deletions
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 79dfbc8a5..346c496ce 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -266,46 +266,43 @@ namespace MediaBrowser.Server.Implementations.Session /// <summary> /// Used to report playback progress for an item /// </summary> - /// <param name="item">The item.</param> - /// <param name="positionTicks">The position ticks.</param> - /// <param name="isPaused">if set to <c>true</c> [is paused].</param> - /// <param name="sessionId">The session id.</param> + /// <param name="info">The info.</param> /// <returns>Task.</returns> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentOutOfRangeException">positionTicks</exception> - public async Task OnPlaybackProgress(BaseItem item, long? positionTicks, bool isPaused, bool isMuted, Guid sessionId) + public async Task OnPlaybackProgress(PlaybackProgressInfo info) { - if (item == null) + if (info == null) { - throw new ArgumentNullException(); + throw new ArgumentNullException("info"); } - if (positionTicks.HasValue && positionTicks.Value < 0) + if (info.PositionTicks.HasValue && info.PositionTicks.Value < 0) { throw new ArgumentOutOfRangeException("positionTicks"); } - var session = Sessions.First(i => i.Id.Equals(sessionId)); + var session = Sessions.First(i => i.Id.Equals(info.SessionId)); - UpdateNowPlayingItem(session, item, isPaused, isMuted, positionTicks); + UpdateNowPlayingItem(session, info.Item, info.IsPaused, info.IsMuted, info.PositionTicks); - var key = item.GetUserDataKey(); + var key = info.Item.GetUserDataKey(); var user = session.User; - if (positionTicks.HasValue) + if (info.PositionTicks.HasValue) { var data = _userDataRepository.GetUserData(user.Id, key); - UpdatePlayState(item, data, positionTicks.Value); + UpdatePlayState(info.Item, data, info.PositionTicks.Value); await _userDataRepository.SaveUserData(user.Id, key, data, CancellationToken.None).ConfigureAwait(false); } EventHelper.QueueEventIfNotNull(PlaybackProgress, this, new PlaybackProgressEventArgs { - Item = item, + Item = info.Item, User = user, - PlaybackPositionTicks = positionTicks + PlaybackPositionTicks = info.PositionTicks }, _logger); } @@ -313,36 +310,35 @@ namespace MediaBrowser.Server.Implementations.Session /// <summary> /// Used to report that playback has ended for an item /// </summary> - /// <param name="item">The item.</param> - /// <param name="positionTicks">The position ticks.</param> - /// <param name="sessionId">The session id.</param> + /// <param name="info">The info.</param> /// <returns>Task.</returns> - /// <exception cref="System.ArgumentNullException"></exception> - public async Task OnPlaybackStopped(BaseItem item, long? positionTicks, Guid sessionId) + /// <exception cref="System.ArgumentNullException">info</exception> + /// <exception cref="System.ArgumentOutOfRangeException">positionTicks</exception> + public async Task OnPlaybackStopped(PlaybackStopInfo info) { - if (item == null) + if (info == null) { - throw new ArgumentNullException(); + throw new ArgumentNullException("info"); } - if (positionTicks.HasValue && positionTicks.Value < 0) + if (info.PositionTicks.HasValue && info.PositionTicks.Value < 0) { throw new ArgumentOutOfRangeException("positionTicks"); } - var session = Sessions.First(i => i.Id.Equals(sessionId)); + var session = Sessions.First(i => i.Id.Equals(info.SessionId)); - RemoveNowPlayingItem(session, item); + RemoveNowPlayingItem(session, info.Item); - var key = item.GetUserDataKey(); + var key = info.Item.GetUserDataKey(); var user = session.User; var data = _userDataRepository.GetUserData(user.Id, key); - if (positionTicks.HasValue) + if (info.PositionTicks.HasValue) { - UpdatePlayState(item, data, positionTicks.Value); + UpdatePlayState(info.Item, data, info.PositionTicks.Value); } else { @@ -356,9 +352,9 @@ namespace MediaBrowser.Server.Implementations.Session EventHelper.QueueEventIfNotNull(PlaybackStopped, this, new PlaybackProgressEventArgs { - Item = item, + Item = info.Item, User = user, - PlaybackPositionTicks = positionTicks + PlaybackPositionTicks = info.PositionTicks }, _logger); } diff --git a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs index 95eb5948f..0781e8228 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs @@ -128,7 +128,16 @@ namespace MediaBrowser.Server.Implementations.Session var isPaused = vals.Length > 2 && string.Equals(vals[2], "true", StringComparison.OrdinalIgnoreCase); var isMuted = vals.Length > 3 && string.Equals(vals[3], "true", StringComparison.OrdinalIgnoreCase); - _sessionManager.OnPlaybackProgress(item, positionTicks, isPaused, isMuted, session.Id); + var info = new PlaybackProgressInfo + { + Item = item, + PositionTicks = positionTicks, + IsMuted = isMuted, + IsPaused = isPaused, + SessionId = session.Id + }; + + _sessionManager.OnPlaybackProgress(info); } } else if (string.Equals(message.MessageType, "PlaybackStopped", StringComparison.OrdinalIgnoreCase)) @@ -155,7 +164,14 @@ namespace MediaBrowser.Server.Implementations.Session } } - _sessionManager.OnPlaybackStopped(item, positionTicks, session.Id); + var info = new PlaybackStopInfo + { + Item = item, + PositionTicks = positionTicks, + SessionId = session.Id + }; + + _sessionManager.OnPlaybackStopped(info); } } |
