From 1dbc91978ece81628c339d1dc3b53f6d250cb005 Mon Sep 17 00:00:00 2001 From: Ionut Andrei Oanca Date: Fri, 13 Nov 2020 15:13:32 +0100 Subject: Address requested changes and fix some warnings --- .../PlaybackRequests/SetRepeatModeGroupRequest.cs | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs (limited to 'MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs') diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs new file mode 100644 index 0000000000..79373ef5f5 --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs @@ -0,0 +1,27 @@ +using System.Threading; +using MediaBrowser.Controller.Session; +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay +{ + /// + /// Class SetRepeatModeGroupRequest. + /// + public class SetRepeatModeGroupRequest : IGroupPlaybackRequest + { + /// + /// Gets or sets the repeat mode. + /// + /// The repeat mode. + public string Mode { get; set; } + + /// + public PlaybackRequestType Type { get; } = PlaybackRequestType.SetRepeatMode; + + /// + public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + { + state.HandleRequest(context, state.Type, this, session, cancellationToken); + } + } +} -- cgit v1.2.3 From 5d77f422f0e4998130f1defebd08e053188a1a25 Mon Sep 17 00:00:00 2001 From: Ionut Andrei Oanca Date: Sat, 14 Nov 2020 23:40:01 +0100 Subject: Hide some property setters, init null values, update namespaces --- .../SyncPlay/GroupController.cs | 49 +++--------- Jellyfin.Api/Controllers/SyncPlayController.cs | 93 +++++----------------- .../SyncPlay/GroupStates/AbstractGroupState.cs | 10 ++- .../SyncPlay/GroupStates/IdleGroupState.cs | 3 +- .../SyncPlay/GroupStates/PausedGroupState.cs | 3 +- .../SyncPlay/GroupStates/PlayingGroupState.cs | 3 +- .../SyncPlay/GroupStates/WaitingGroupState.cs | 6 +- .../SyncPlay/IGroupController.cs | 1 + MediaBrowser.Controller/SyncPlay/IGroupState.cs | 1 + .../SyncPlay/IGroupStateContext.cs | 14 +--- .../PlaybackRequests/BufferGroupRequest.cs | 33 +++++--- .../PlaybackRequests/IgnoreWaitGroupRequest.cs | 15 +++- .../MovePlaylistItemGroupRequest.cs | 21 +++-- .../PlaybackRequests/NextTrackGroupRequest.cs | 15 +++- .../SyncPlay/PlaybackRequests/PauseGroupRequest.cs | 2 +- .../SyncPlay/PlaybackRequests/PingGroupRequest.cs | 15 +++- .../SyncPlay/PlaybackRequests/PlayGroupRequest.cs | 29 +++++-- .../PlaybackRequests/PreviousTrackGroupRequest.cs | 15 +++- .../SyncPlay/PlaybackRequests/QueueGroupRequest.cs | 27 +++++-- .../SyncPlay/PlaybackRequests/ReadyGroupRequest.cs | 33 +++++--- .../RemoveFromPlaylistGroupRequest.cs | 15 +++- .../SyncPlay/PlaybackRequests/SeekGroupRequest.cs | 15 +++- .../SetPlaylistItemGroupRequest.cs | 15 +++- .../PlaybackRequests/SetRepeatModeGroupRequest.cs | 15 +++- .../PlaybackRequests/SetShuffleModeGroupRequest.cs | 15 +++- .../SyncPlay/PlaybackRequests/StopGroupRequest.cs | 2 +- .../PlaybackRequests/UnpauseGroupRequest.cs | 2 +- .../SyncPlay/Queue/PlayQueueManager.cs | 9 +-- MediaBrowser.Model/SyncPlay/GroupInfoDto.cs | 15 +++- MediaBrowser.Model/SyncPlay/GroupQueueMode.cs | 18 +++++ MediaBrowser.Model/SyncPlay/GroupRequestType.cs | 10 +-- MediaBrowser.Model/SyncPlay/GroupStateType.cs | 8 +- MediaBrowser.Model/SyncPlay/NewGroupRequest.cs | 10 ++- MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs | 13 ++- .../SyncPlay/PlayQueueUpdateReason.cs | 4 +- MediaBrowser.Model/SyncPlay/QueueItem.cs | 21 +++-- MediaBrowser.Model/SyncPlay/SendCommand.cs | 15 +++- 37 files changed, 363 insertions(+), 227 deletions(-) create mode 100644 MediaBrowser.Model/SyncPlay/GroupQueueMode.cs (limited to 'MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs') diff --git a/Emby.Server.Implementations/SyncPlay/GroupController.cs b/Emby.Server.Implementations/SyncPlay/GroupController.cs index 5447aad5dd..a0d951b3e6 100644 --- a/Emby.Server.Implementations/SyncPlay/GroupController.cs +++ b/Emby.Server.Implementations/SyncPlay/GroupController.cs @@ -10,6 +10,8 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay; +using MediaBrowser.Controller.SyncPlay.GroupStates; +using MediaBrowser.Controller.SyncPlay.Queue; using MediaBrowser.Model.SyncPlay; using Microsoft.Extensions.Logging; @@ -358,7 +360,7 @@ namespace Emby.Server.Implementations.SyncPlay GroupName = GroupName, State = _state.Type, Participants = Participants.Values.Select(session => session.Session.UserName).Distinct().ToList(), - LastUpdatedAt = DateToUTCString(DateTime.UtcNow) + LastUpdatedAt = DateTime.UtcNow }; } @@ -422,8 +424,8 @@ namespace Emby.Server.Implementations.SyncPlay PlaylistItemId = PlayQueue.GetPlayingItemPlaylistId(), PositionTicks = PositionTicks, Command = type, - When = DateToUTCString(LastActivity), - EmittedAt = DateToUTCString(DateTime.UtcNow) + When = LastActivity, + EmittedAt = DateTime.UtcNow }; } @@ -438,12 +440,6 @@ namespace Emby.Server.Implementations.SyncPlay }; } - /// - public string DateToUTCString(DateTime dateTime) - { - return dateTime.ToUniversalTime().ToString("o", CultureInfo.InvariantCulture); - } - /// public long SanitizePositionTicks(long? positionTicks) { @@ -580,7 +576,7 @@ namespace Emby.Server.Implementations.SyncPlay } /// - public bool AddToPlayQueue(IEnumerable newItems, string mode) + public bool AddToPlayQueue(IEnumerable newItems, GroupQueueMode mode) { // Ignore on empty list. if (!newItems.Any()) @@ -594,7 +590,7 @@ namespace Emby.Server.Implementations.SyncPlay return false; } - if (mode.Equals("next", StringComparison.OrdinalIgnoreCase)) + if (mode.Equals(GroupQueueMode.QueueNext)) { PlayQueue.QueueNext(newItems); } @@ -648,36 +644,15 @@ namespace Emby.Server.Implementations.SyncPlay } /// - public void SetRepeatMode(string mode) + public void SetRepeatMode(GroupRepeatMode mode) { - switch (mode) - { - case "RepeatOne": - PlayQueue.SetRepeatMode(GroupRepeatMode.RepeatOne); - break; - case "RepeatAll": - PlayQueue.SetRepeatMode(GroupRepeatMode.RepeatAll); - break; - default: - // On unknown values, default to repeat none. - PlayQueue.SetRepeatMode(GroupRepeatMode.RepeatNone); - break; - } + PlayQueue.SetRepeatMode(mode); } /// - public void SetShuffleMode(string mode) + public void SetShuffleMode(GroupShuffleMode mode) { - switch (mode) - { - case "Shuffle": - PlayQueue.SetShuffleMode(GroupShuffleMode.Shuffle); - break; - default: - // On unknown values, default to sorted playlist. - PlayQueue.SetShuffleMode(GroupShuffleMode.Sorted); - break; - } + PlayQueue.SetShuffleMode(mode); } /// @@ -701,7 +676,7 @@ namespace Emby.Server.Implementations.SyncPlay return new PlayQueueUpdate() { Reason = reason, - LastUpdate = DateToUTCString(PlayQueue.LastChange), + LastUpdate = PlayQueue.LastChange, Playlist = PlayQueue.GetPlaylist(), PlayingItemIndex = PlayQueue.PlayingItemIndex, StartPositionTicks = startPositionTicks, diff --git a/Jellyfin.Api/Controllers/SyncPlayController.cs b/Jellyfin.Api/Controllers/SyncPlayController.cs index 6bd78179b5..9085a71c88 100644 --- a/Jellyfin.Api/Controllers/SyncPlayController.cs +++ b/Jellyfin.Api/Controllers/SyncPlayController.cs @@ -7,6 +7,7 @@ using Jellyfin.Api.Helpers; using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay; +using MediaBrowser.Controller.SyncPlay.PlaybackRequests; using MediaBrowser.Model.SyncPlay; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; @@ -118,17 +119,12 @@ namespace Jellyfin.Api.Controllers [HttpPost("Play")] [ProducesResponseType(StatusCodes.Status204NoContent)] public ActionResult SyncPlayPlay( - [FromQuery, Required] string playingQueue, + [FromQuery, Required] Guid[] playingQueue, [FromQuery, Required] int playingItemPosition, [FromQuery, Required] long startPositionTicks) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new PlayGroupRequest() - { - PlayingItemPosition = playingItemPosition, - StartPositionTicks = startPositionTicks - }; - syncPlayRequest.PlayingQueue.AddRange(RequestHelpers.GetGuids(playingQueue)); + var syncPlayRequest = new PlayGroupRequest(playingQueue, playingItemPosition, startPositionTicks); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -145,10 +141,7 @@ namespace Jellyfin.Api.Controllers [FromQuery, Required] string playlistItemId) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new SetPlaylistItemGroupRequest() - { - PlaylistItemId = playlistItemId - }; + var syncPlayRequest = new SetPlaylistItemGroupRequest(playlistItemId); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -165,8 +158,7 @@ namespace Jellyfin.Api.Controllers [FromQuery, Required] string[] playlistItemIds) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new RemoveFromPlaylistGroupRequest(); - syncPlayRequest.PlaylistItemIds.AddRange(playlistItemIds); + var syncPlayRequest = new RemoveFromPlaylistGroupRequest(playlistItemIds); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -185,11 +177,7 @@ namespace Jellyfin.Api.Controllers [FromQuery, Required] int newIndex) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new MovePlaylistItemGroupRequest() - { - PlaylistItemId = playlistItemId, - NewIndex = newIndex - }; + var syncPlayRequest = new MovePlaylistItemGroupRequest(playlistItemId, newIndex); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -197,22 +185,18 @@ namespace Jellyfin.Api.Controllers /// /// Request to queue items to the playlist of a SyncPlay group. /// - /// The items to add. Item ids, comma delimited. - /// The mode in which to queue items. + /// The items to add. + /// The mode in which to enqueue the items. /// Queue update request sent to all group members. /// A indicating success. [HttpPost("Queue")] [ProducesResponseType(StatusCodes.Status204NoContent)] public ActionResult SyncPlayQueue( - [FromQuery, Required] string itemIds, - [FromQuery, Required] string mode) + [FromQuery, Required] Guid[] items, + [FromQuery, Required] GroupQueueMode mode) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new QueueGroupRequest() - { - Mode = mode - }; - syncPlayRequest.ItemIds.AddRange(RequestHelpers.GetGuids(itemIds)); + var syncPlayRequest = new QueueGroupRequest(items, mode); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -274,10 +258,7 @@ namespace Jellyfin.Api.Controllers [FromQuery, Required] long positionTicks) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new SeekGroupRequest() - { - PositionTicks = positionTicks - }; + var syncPlayRequest = new SeekGroupRequest(positionTicks); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -305,23 +286,11 @@ namespace Jellyfin.Api.Controllers IGroupPlaybackRequest syncPlayRequest; if (!bufferingDone) { - syncPlayRequest = new BufferGroupRequest() - { - When = when, - PositionTicks = positionTicks, - IsPlaying = isPlaying, - PlaylistItemId = playlistItemId - }; + syncPlayRequest = new BufferGroupRequest(when, positionTicks, isPlaying, playlistItemId); } else { - syncPlayRequest = new ReadyGroupRequest() - { - When = when, - PositionTicks = positionTicks, - IsPlaying = isPlaying, - PlaylistItemId = playlistItemId - }; + syncPlayRequest = new ReadyGroupRequest(when, positionTicks, isPlaying, playlistItemId); } _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); @@ -340,10 +309,7 @@ namespace Jellyfin.Api.Controllers [FromQuery, Required] bool ignoreWait) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new IgnoreWaitGroupRequest() - { - IgnoreWait = ignoreWait - }; + var syncPlayRequest = new IgnoreWaitGroupRequest(ignoreWait); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -360,10 +326,7 @@ namespace Jellyfin.Api.Controllers [FromQuery, Required] string playlistItemId) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new NextTrackGroupRequest() - { - PlaylistItemId = playlistItemId - }; + var syncPlayRequest = new NextTrackGroupRequest(playlistItemId); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -380,10 +343,7 @@ namespace Jellyfin.Api.Controllers [FromQuery, Required] string playlistItemId) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new PreviousTrackGroupRequest() - { - PlaylistItemId = playlistItemId - }; + var syncPlayRequest = new PreviousTrackGroupRequest(playlistItemId); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -397,13 +357,10 @@ namespace Jellyfin.Api.Controllers [HttpPost("SetRepeatMode")] [ProducesResponseType(StatusCodes.Status204NoContent)] public ActionResult SyncPlaySetRepeatMode( - [FromQuery, Required] string mode) + [FromQuery, Required] GroupRepeatMode mode) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new SetRepeatModeGroupRequest() - { - Mode = mode - }; + var syncPlayRequest = new SetRepeatModeGroupRequest(mode); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -417,13 +374,10 @@ namespace Jellyfin.Api.Controllers [HttpPost("SetShuffleMode")] [ProducesResponseType(StatusCodes.Status204NoContent)] public ActionResult SyncPlaySetShuffleMode( - [FromQuery, Required] string mode) + [FromQuery, Required] GroupShuffleMode mode) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new SetShuffleModeGroupRequest() - { - Mode = mode - }; + var syncPlayRequest = new SetShuffleModeGroupRequest(mode); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -440,10 +394,7 @@ namespace Jellyfin.Api.Controllers [FromQuery, Required] double ping) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - var syncPlayRequest = new PingGroupRequest() - { - Ping = Convert.ToInt64(ping) - }; + var syncPlayRequest = new PingGroupRequest(Convert.ToInt64(ping)); _syncPlayManager.HandleRequest(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs index 829ef2bbab..bc2e223802 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs @@ -1,10 +1,10 @@ -using System; using System.Threading; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.SyncPlay.PlaybackRequests; using MediaBrowser.Model.SyncPlay; using Microsoft.Extensions.Logging; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.GroupStates { /// /// Class AbstractGroupState. @@ -104,7 +104,11 @@ namespace MediaBrowser.Controller.SyncPlay return; } - var reason = request.Mode.Equals("next", StringComparison.OrdinalIgnoreCase) ? PlayQueueUpdateReason.QueueNext : PlayQueueUpdateReason.Queue; + var reason = request.Mode switch + { + GroupQueueMode.QueueNext => PlayQueueUpdateReason.QueueNext, + _ => PlayQueueUpdateReason.Queue + }; var playQueueUpdate = context.GetPlayQueueUpdate(reason); var update = context.NewSyncPlayGroupUpdate(GroupUpdateType.PlayQueue, playQueueUpdate); context.SendGroupUpdate(session, SyncPlayBroadcastType.AllGroup, update, cancellationToken); diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs index d9350cc9b9..660afb607d 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs @@ -1,9 +1,10 @@ using System.Threading; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.SyncPlay.PlaybackRequests; using MediaBrowser.Model.SyncPlay; using Microsoft.Extensions.Logging; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.GroupStates { /// /// Class IdleGroupState. diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs index 5ae4786057..29942898e6 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs @@ -1,10 +1,11 @@ using System; using System.Threading; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.SyncPlay.PlaybackRequests; using MediaBrowser.Model.SyncPlay; using Microsoft.Extensions.Logging; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.GroupStates { /// /// Class PausedGroupState. diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs index 394c64e511..c5d73dedb8 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs @@ -1,10 +1,11 @@ using System; using System.Threading; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.SyncPlay.PlaybackRequests; using MediaBrowser.Model.SyncPlay; using Microsoft.Extensions.Logging; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.GroupStates { /// /// Class PlayingGroupState. diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs index c78077b357..78318dd94d 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs @@ -1,10 +1,11 @@ using System; using System.Threading; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.SyncPlay.PlaybackRequests; using MediaBrowser.Model.SyncPlay; using Microsoft.Extensions.Logging; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.GroupStates { /// /// Class WaitingGroupState. @@ -464,8 +465,7 @@ namespace MediaBrowser.Controller.SyncPlay { // Others are still buffering, tell this client to pause when ready. var command = context.NewSyncPlayCommand(SendCommandType.Pause); - var pauseAtTime = currentTime.AddTicks(delayTicks); - command.When = context.DateToUTCString(pauseAtTime); + command.When = currentTime.AddTicks(delayTicks); context.SendCommand(session, SyncPlayBroadcastType.CurrentSession, command, cancellationToken); Logger.LogInformation("HandleRequest: {0} in group {1}, others still buffering, {2} will pause when ready in {3} seconds.", request.Type, context.GroupId.ToString(), session.Id, TimeSpan.FromTicks(delayTicks).TotalSeconds); diff --git a/MediaBrowser.Controller/SyncPlay/IGroupController.cs b/MediaBrowser.Controller/SyncPlay/IGroupController.cs index 038233fdd3..aa8bb9eaea 100644 --- a/MediaBrowser.Controller/SyncPlay/IGroupController.cs +++ b/MediaBrowser.Controller/SyncPlay/IGroupController.cs @@ -2,6 +2,7 @@ using System; using System.Threading; using Jellyfin.Data.Entities; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.SyncPlay.Queue; using MediaBrowser.Model.SyncPlay; namespace MediaBrowser.Controller.SyncPlay diff --git a/MediaBrowser.Controller/SyncPlay/IGroupState.cs b/MediaBrowser.Controller/SyncPlay/IGroupState.cs index f6ebe2a58d..0028823b4e 100644 --- a/MediaBrowser.Controller/SyncPlay/IGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/IGroupState.cs @@ -1,5 +1,6 @@ using System.Threading; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.SyncPlay.PlaybackRequests; using MediaBrowser.Model.SyncPlay; namespace MediaBrowser.Controller.SyncPlay diff --git a/MediaBrowser.Controller/SyncPlay/IGroupStateContext.cs b/MediaBrowser.Controller/SyncPlay/IGroupStateContext.cs index 2ddaae6400..3609be36b7 100644 --- a/MediaBrowser.Controller/SyncPlay/IGroupStateContext.cs +++ b/MediaBrowser.Controller/SyncPlay/IGroupStateContext.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.SyncPlay.Queue; using MediaBrowser.Model.SyncPlay; namespace MediaBrowser.Controller.SyncPlay @@ -97,13 +98,6 @@ namespace MediaBrowser.Controller.SyncPlay /// The group update. GroupUpdate NewSyncPlayGroupUpdate(GroupUpdateType type, T data); - /// - /// Converts DateTime to UTC string. - /// - /// The date to convert. - /// The UTC string. - string DateToUTCString(DateTime dateTime); - /// /// Sanitizes the PositionTicks, considers the current playing item when available. /// @@ -187,7 +181,7 @@ namespace MediaBrowser.Controller.SyncPlay /// The new items to add to the play queue. /// The mode with which the items will be added. /// true if the play queue has been changed; false if something went wrong. - bool AddToPlayQueue(IEnumerable newItems, string mode); + bool AddToPlayQueue(IEnumerable newItems, GroupQueueMode mode); /// /// Restarts current item in play queue. @@ -210,13 +204,13 @@ namespace MediaBrowser.Controller.SyncPlay /// Sets the repeat mode. /// /// The new mode. - void SetRepeatMode(string mode); + void SetRepeatMode(GroupRepeatMode mode); /// /// Sets the shuffle mode. /// /// The new mode. - void SetShuffleMode(string mode); + void SetShuffleMode(GroupShuffleMode mode); /// /// Creates a play queue update. diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs index b5bed89f21..a12ab96b77 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs @@ -3,7 +3,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class BufferGroupRequest. @@ -11,28 +11,43 @@ namespace MediaBrowser.Controller.SyncPlay public class BufferGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets when the request has been made by the client. + /// Initializes a new instance of the class. + /// + /// When the request has been made, as reported by the client. + /// The position ticks. + /// Whether the client playback is unpaused. + /// The playlist item identifier of the playing item. + public BufferGroupRequest(DateTime when, long positionTicks, bool isPlaying, string playlistItemId) + { + When = when; + PositionTicks = positionTicks; + IsPlaying = isPlaying; + PlaylistItemId = playlistItemId; + } + + /// + /// Gets when the request has been made by the client. /// /// The date of the request. - public DateTime When { get; set; } + public DateTime When { get; } /// - /// Gets or sets the position ticks. + /// Gets the position ticks. /// /// The position ticks. - public long PositionTicks { get; set; } + public long PositionTicks { get; } /// - /// Gets or sets a value indicating whether the client playback is unpaused. + /// Gets a value indicating whether the client playback is unpaused. /// /// The client playback status. - public bool IsPlaying { get; set; } + public bool IsPlaying { get; } /// - /// Gets or sets the playlist item identifier of the playing item. + /// Gets the playlist item identifier of the playing item. /// /// The playlist item identifier. - public string PlaylistItemId { get; set; } + public string PlaylistItemId { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.Buffer; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs index 325839f107..25034cb10b 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class IgnoreWaitGroupRequest. @@ -10,10 +10,19 @@ namespace MediaBrowser.Controller.SyncPlay public class IgnoreWaitGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets a value indicating whether the client should be ignored. + /// Initializes a new instance of the class. + /// + /// Whether the client should be ignored. + public IgnoreWaitGroupRequest(bool ignoreWait) + { + IgnoreWait = ignoreWait; + } + + /// + /// Gets a value indicating whether the client should be ignored. /// /// The client group-wait status. - public bool IgnoreWait { get; set; } + public bool IgnoreWait { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.IgnoreWait; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs index 3c95f53d4a..a12eff8b84 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class MovePlaylistItemGroupRequest. @@ -10,16 +10,27 @@ namespace MediaBrowser.Controller.SyncPlay public class MovePlaylistItemGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets the playlist identifier of the item. + /// Initializes a new instance of the class. + /// + /// The playlist identifier of the item. + /// The new position. + public MovePlaylistItemGroupRequest(string playlistItemId, int newIndex) + { + PlaylistItemId = playlistItemId; + NewIndex = newIndex; + } + + /// + /// Gets the playlist identifier of the item. /// /// The playlist identifier of the item. - public string PlaylistItemId { get; set; } + public string PlaylistItemId { get; } /// - /// Gets or sets the new position. + /// Gets the new position. /// /// The new position. - public int NewIndex { get; set; } + public int NewIndex { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.MovePlaylistItem; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs index 8636d6f4d5..f87bbc556d 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class NextTrackGroupRequest. @@ -10,10 +10,19 @@ namespace MediaBrowser.Controller.SyncPlay public class NextTrackGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets the playing item identifier. + /// Initializes a new instance of the class. + /// + /// The playing item identifier. + public NextTrackGroupRequest(string playlistItemId) + { + PlaylistItemId = playlistItemId; + } + + /// + /// Gets the playing item identifier. /// /// The playing item identifier. - public string PlaylistItemId { get; set; } + public string PlaylistItemId { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.NextTrack; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs index 45bd3b15f1..0dcd1423fd 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class PauseGroupRequest. diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs index 9dacb79857..2528bb3e70 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class PingGroupRequest. @@ -10,10 +10,19 @@ namespace MediaBrowser.Controller.SyncPlay public class PingGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets the ping time. + /// Initializes a new instance of the class. + /// + /// The ping time. + public PingGroupRequest(long ping) + { + Ping = ping; + } + + /// + /// Gets the ping time. /// /// The ping time. - public long Ping { get; set; } + public long Ping { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.Ping; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs index e090a882e2..306c161ed9 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs @@ -4,30 +4,45 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class PlayGroupRequest. /// public class PlayGroupRequest : IGroupPlaybackRequest { + /// + /// Initializes a new instance of the class. + /// + /// The playing queue. + /// The playing item position. + /// The start position ticks. + public PlayGroupRequest(Guid[] playingQueue, int playingItemPosition, long startPositionTicks) + { + var list = new List(); + list.AddRange(playingQueue); + PlayingQueue = list; + PlayingItemPosition = playingItemPosition; + StartPositionTicks = startPositionTicks; + } + /// /// Gets the playing queue. /// /// The playing queue. - public List PlayingQueue { get; } = new List(); + public IReadOnlyList PlayingQueue { get; } /// - /// Gets or sets the playing item from the queue. + /// Gets the position of the playing item in the queue. /// - /// The playing item. - public int PlayingItemPosition { get; set; } + /// The playing item position. + public int PlayingItemPosition { get; } /// - /// Gets or sets the start position ticks. + /// Gets the start position ticks. /// /// The start position ticks. - public long StartPositionTicks { get; set; } + public long StartPositionTicks { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.Play; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs index aca5d678e0..206fef3312 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class PreviousTrackGroupRequest. @@ -10,10 +10,19 @@ namespace MediaBrowser.Controller.SyncPlay public class PreviousTrackGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets the playing item identifier. + /// Initializes a new instance of the class. + /// + /// The playing item identifier. + public PreviousTrackGroupRequest(string playlistItemId) + { + PlaylistItemId = playlistItemId; + } + + /// + /// Gets the playing item identifier. /// /// The playing item identifier. - public string PlaylistItemId { get; set; } + public string PlaylistItemId { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.PreviousTrack; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs index 82380b2098..9580b53154 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs @@ -4,7 +4,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class QueueGroupRequest. @@ -12,16 +12,29 @@ namespace MediaBrowser.Controller.SyncPlay public class QueueGroupRequest : IGroupPlaybackRequest { /// - /// Gets the items to queue. + /// Initializes a new instance of the class. /// - /// The items to queue. - public List ItemIds { get; } = new List(); + /// The items to add to the queue. + /// The enqueue mode. + public QueueGroupRequest(Guid[] items, GroupQueueMode mode) + { + var list = new List(); + list.AddRange(items); + ItemIds = list; + Mode = mode; + } + + /// + /// Gets the items to enqueue. + /// + /// The items to enqueue. + public IReadOnlyList ItemIds { get; } /// - /// Gets or sets the mode in which to add the new items. + /// Gets the mode in which to add the new items. /// - /// The mode. - public string Mode { get; set; } + /// The enqueue mode. + public GroupQueueMode Mode { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.Queue; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs index c8a2268cfb..a2b3553cee 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs @@ -3,7 +3,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class ReadyGroupRequest. @@ -11,28 +11,43 @@ namespace MediaBrowser.Controller.SyncPlay public class ReadyGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets when the request has been made by the client. + /// Initializes a new instance of the class. + /// + /// When the request has been made, as reported by the client. + /// The position ticks. + /// Whether the client playback is unpaused. + /// The playlist item identifier of the playing item. + public ReadyGroupRequest(DateTime when, long positionTicks, bool isPlaying, string playlistItemId) + { + When = when; + PositionTicks = positionTicks; + IsPlaying = isPlaying; + PlaylistItemId = playlistItemId; + } + + /// + /// Gets when the request has been made by the client. /// /// The date of the request. - public DateTime When { get; set; } + public DateTime When { get; } /// - /// Gets or sets the position ticks. + /// Gets the position ticks. /// /// The position ticks. - public long PositionTicks { get; set; } + public long PositionTicks { get; } /// - /// Gets or sets a value indicating whether the client playback is unpaused. + /// Gets a value indicating whether the client playback is unpaused. /// /// The client playback status. - public bool IsPlaying { get; set; } + public bool IsPlaying { get; } /// - /// Gets or sets the playlist item identifier of the playing item. + /// Gets the playlist item identifier of the playing item. /// /// The playlist item identifier. - public string PlaylistItemId { get; set; } + public string PlaylistItemId { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.Ready; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs index 4ead1301b6..21c602846e 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs @@ -3,18 +3,29 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class RemoveFromPlaylistGroupRequest. /// public class RemoveFromPlaylistGroupRequest : IGroupPlaybackRequest { + /// + /// Initializes a new instance of the class. + /// + /// The playlist ids of the items to remove. + public RemoveFromPlaylistGroupRequest(string[] items) + { + var list = new List(); + list.AddRange(items); + PlaylistItemIds = list; + } + /// /// Gets the playlist identifiers ot the items. /// /// The playlist identifiers ot the items. - public List PlaylistItemIds { get; } = new List(); + public IReadOnlyList PlaylistItemIds { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.RemoveFromPlaylist; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs index d311bffdc4..f7bfc19788 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class SeekGroupRequest. @@ -10,10 +10,19 @@ namespace MediaBrowser.Controller.SyncPlay public class SeekGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets the position ticks. + /// Initializes a new instance of the class. + /// + /// The position ticks. + public SeekGroupRequest(long positionTicks) + { + PositionTicks = positionTicks; + } + + /// + /// Gets the position ticks. /// /// The position ticks. - public long PositionTicks { get; set; } + public long PositionTicks { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.Seek; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs index 0983d91292..2ca33c1ccf 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class SetPlaylistItemGroupRequest. @@ -10,10 +10,19 @@ namespace MediaBrowser.Controller.SyncPlay public class SetPlaylistItemGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets the playlist identifier of the playing item. + /// Initializes a new instance of the class. + /// + /// The playlist identifier of the item. + public SetPlaylistItemGroupRequest(string playlistItemId) + { + PlaylistItemId = playlistItemId; + } + + /// + /// Gets the playlist identifier of the playing item. /// /// The playlist identifier of the playing item. - public string PlaylistItemId { get; set; } + public string PlaylistItemId { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.SetPlaylistItem; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs index 79373ef5f5..cd4505e4d0 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class SetRepeatModeGroupRequest. @@ -10,10 +10,19 @@ namespace MediaBrowser.Controller.SyncPlay public class SetRepeatModeGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets the repeat mode. + /// Initializes a new instance of the class. + /// + /// The repeat mode. + public SetRepeatModeGroupRequest(GroupRepeatMode mode) + { + Mode = mode; + } + + /// + /// Gets the repeat mode. /// /// The repeat mode. - public string Mode { get; set; } + public GroupRepeatMode Mode { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.SetRepeatMode; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs index 316fb49f40..4530a34c02 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class SetShuffleModeGroupRequest. @@ -10,10 +10,19 @@ namespace MediaBrowser.Controller.SyncPlay public class SetShuffleModeGroupRequest : IGroupPlaybackRequest { /// - /// Gets or sets the shuffle mode. + /// Initializes a new instance of the class. + /// + /// The shuffle mode. + public SetShuffleModeGroupRequest(GroupShuffleMode mode) + { + Mode = mode; + } + + /// + /// Gets the shuffle mode. /// /// The shuffle mode. - public string Mode { get; set; } + public GroupShuffleMode Mode { get; } /// public PlaybackRequestType Type { get; } = PlaybackRequestType.SetShuffleMode; diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs index 9f6f8ea63c..ec01cd1105 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class StopGroupRequest. diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs index 84a6b0a6e7..bdf4fd4767 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs @@ -2,7 +2,7 @@ using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests { /// /// Class UnpauseGroupRequest. diff --git a/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs b/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs index 821a6314bd..2d1d1533b9 100644 --- a/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs +++ b/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using MediaBrowser.Model.SyncPlay; -namespace MediaBrowser.Controller.SyncPlay +namespace MediaBrowser.Controller.SyncPlay.Queue { /// /// Class PlayQueueManager. @@ -563,11 +563,8 @@ namespace MediaBrowser.Controller.SyncPlay var list = new List(); foreach (var item in items) { - list.Add(new QueueItem() - { - ItemId = item, - PlaylistItemId = "syncPlayItem" + GetNextProgressiveId() - }); + var queueItem = new QueueItem(item, "syncPlayItem" + GetNextProgressiveId()); + list.Add(queueItem); } return list; diff --git a/MediaBrowser.Model/SyncPlay/GroupInfoDto.cs b/MediaBrowser.Model/SyncPlay/GroupInfoDto.cs index 85b9a35229..16a75eb68e 100644 --- a/MediaBrowser.Model/SyncPlay/GroupInfoDto.cs +++ b/MediaBrowser.Model/SyncPlay/GroupInfoDto.cs @@ -1,5 +1,4 @@ -#nullable disable - +using System; using System.Collections.Generic; namespace MediaBrowser.Model.SyncPlay @@ -9,6 +8,16 @@ namespace MediaBrowser.Model.SyncPlay /// public class GroupInfoDto { + /// + /// Initializes a new instance of the class. + /// + public GroupInfoDto() + { + GroupId = string.Empty; + GroupName = string.Empty; + Participants = new List(); + } + /// /// Gets or sets the group identifier. /// @@ -37,6 +46,6 @@ namespace MediaBrowser.Model.SyncPlay /// Gets or sets the date when this dto has been updated. /// /// The date when this dto has been updated. - public string LastUpdatedAt { get; set; } + public DateTime LastUpdatedAt { get; set; } } } diff --git a/MediaBrowser.Model/SyncPlay/GroupQueueMode.cs b/MediaBrowser.Model/SyncPlay/GroupQueueMode.cs new file mode 100644 index 0000000000..5c9c2627b9 --- /dev/null +++ b/MediaBrowser.Model/SyncPlay/GroupQueueMode.cs @@ -0,0 +1,18 @@ +namespace MediaBrowser.Model.SyncPlay +{ + /// + /// Enum GroupQueueMode. + /// + public enum GroupQueueMode + { + /// + /// Insert items at the end of the queue. + /// + Queue = 0, + + /// + /// Insert items after the currently playing item. + /// + QueueNext = 1 + } +} diff --git a/MediaBrowser.Model/SyncPlay/GroupRequestType.cs b/MediaBrowser.Model/SyncPlay/GroupRequestType.cs index e7361817ca..75c0712364 100644 --- a/MediaBrowser.Model/SyncPlay/GroupRequestType.cs +++ b/MediaBrowser.Model/SyncPlay/GroupRequestType.cs @@ -8,26 +8,26 @@ namespace MediaBrowser.Model.SyncPlay /// /// A user is requesting to create a new group. /// - NewGroup, + NewGroup = 0, /// /// A user is requesting to join a group. /// - JoinGroup, + JoinGroup = 1, /// /// A user is requesting to leave a group. /// - LeaveGroup, + LeaveGroup = 2, /// /// A user is requesting the list of available groups. /// - ListGroups, + ListGroups = 3, /// /// A user is sending a playback command to a group. /// - Playback + Playback = 4 } } diff --git a/MediaBrowser.Model/SyncPlay/GroupStateType.cs b/MediaBrowser.Model/SyncPlay/GroupStateType.cs index 341859b306..7aa454f928 100644 --- a/MediaBrowser.Model/SyncPlay/GroupStateType.cs +++ b/MediaBrowser.Model/SyncPlay/GroupStateType.cs @@ -8,21 +8,21 @@ namespace MediaBrowser.Model.SyncPlay /// /// The group is in idle state. No media is playing. /// - Idle, + Idle = 0, /// /// The group is in wating state. Playback is paused. Will start playing when users are ready. /// - Waiting, + Waiting = 1, /// /// The group is in paused state. Playback is paused. Will resume on play command. /// - Paused, + Paused = 2, /// /// The group is in playing state. Playback is advancing. /// - Playing + Playing = 3 } } diff --git a/MediaBrowser.Model/SyncPlay/NewGroupRequest.cs b/MediaBrowser.Model/SyncPlay/NewGroupRequest.cs index ccab5313f7..eb61a68d15 100644 --- a/MediaBrowser.Model/SyncPlay/NewGroupRequest.cs +++ b/MediaBrowser.Model/SyncPlay/NewGroupRequest.cs @@ -1,5 +1,3 @@ -#nullable disable - namespace MediaBrowser.Model.SyncPlay { /// @@ -7,6 +5,14 @@ namespace MediaBrowser.Model.SyncPlay /// public class NewGroupRequest { + /// + /// Initializes a new instance of the class. + /// + public NewGroupRequest() + { + GroupName = string.Empty; + } + /// /// Gets or sets the group name. /// diff --git a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs index 575597e62d..d193b4c663 100644 --- a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs +++ b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs @@ -1,5 +1,4 @@ -#nullable disable - +using System; using System.Collections.Generic; namespace MediaBrowser.Model.SyncPlay @@ -9,6 +8,14 @@ namespace MediaBrowser.Model.SyncPlay /// public class PlayQueueUpdate { + /// + /// Initializes a new instance of the class. + /// + public PlayQueueUpdate() + { + Playlist = new List(); + } + /// /// Gets or sets the request type that originated this update. /// @@ -19,7 +26,7 @@ namespace MediaBrowser.Model.SyncPlay /// Gets or sets the UTC time of the last change to the playing queue. /// /// The UTC time of the last change to the playing queue. - public string LastUpdate { get; set; } + public DateTime LastUpdate { get; set; } /// /// Gets or sets the playlist. diff --git a/MediaBrowser.Model/SyncPlay/PlayQueueUpdateReason.cs b/MediaBrowser.Model/SyncPlay/PlayQueueUpdateReason.cs index 4b3f6eb4d6..e78940fe68 100644 --- a/MediaBrowser.Model/SyncPlay/PlayQueueUpdateReason.cs +++ b/MediaBrowser.Model/SyncPlay/PlayQueueUpdateReason.cs @@ -26,12 +26,12 @@ namespace MediaBrowser.Model.SyncPlay MoveItem = 3, /// - /// A user is making changes to the queue. + /// A user is adding items the queue. /// Queue = 4, /// - /// A user is making changes to the queue. + /// A user is adding items to the queue, after the currently playing item. /// QueueNext = 5, diff --git a/MediaBrowser.Model/SyncPlay/QueueItem.cs b/MediaBrowser.Model/SyncPlay/QueueItem.cs index ce253b182c..9c4d3a4ceb 100644 --- a/MediaBrowser.Model/SyncPlay/QueueItem.cs +++ b/MediaBrowser.Model/SyncPlay/QueueItem.cs @@ -1,5 +1,3 @@ -#nullable disable - using System; namespace MediaBrowser.Model.SyncPlay @@ -10,15 +8,26 @@ namespace MediaBrowser.Model.SyncPlay public class QueueItem { /// - /// Gets or sets the item identifier. + /// Initializes a new instance of the class. + /// + /// The item identifier. + /// The playlist identifier of the item. + public QueueItem(Guid itemId, string playlistItemId) + { + ItemId = itemId; + PlaylistItemId = playlistItemId; + } + + /// + /// Gets the item identifier. /// /// The item identifier. - public Guid ItemId { get; set; } + public Guid ItemId { get; } /// - /// Gets or sets the playlist identifier of the item. + /// Gets the playlist identifier of the item. /// /// The playlist identifier of the item. - public string PlaylistItemId { get; set; } + public string PlaylistItemId { get; } } } diff --git a/MediaBrowser.Model/SyncPlay/SendCommand.cs b/MediaBrowser.Model/SyncPlay/SendCommand.cs index b24f7e97bd..a3aa54b380 100644 --- a/MediaBrowser.Model/SyncPlay/SendCommand.cs +++ b/MediaBrowser.Model/SyncPlay/SendCommand.cs @@ -1,4 +1,4 @@ -#nullable disable +using System; namespace MediaBrowser.Model.SyncPlay { @@ -7,6 +7,15 @@ namespace MediaBrowser.Model.SyncPlay /// public class SendCommand { + /// + /// Initializes a new instance of the class. + /// + public SendCommand() + { + GroupId = string.Empty; + PlaylistItemId = string.Empty; + } + /// /// Gets or sets the group identifier. /// @@ -23,7 +32,7 @@ namespace MediaBrowser.Model.SyncPlay /// Gets or sets the UTC time when to execute the command. /// /// The UTC time when to execute the command. - public string When { get; set; } + public DateTime When { get; set; } /// /// Gets or sets the position ticks. @@ -41,6 +50,6 @@ namespace MediaBrowser.Model.SyncPlay /// Gets or sets the UTC time when this command has been emitted. /// /// The UTC time when this command has been emitted. - public string EmittedAt { get; set; } + public DateTime EmittedAt { get; set; } } } -- cgit v1.2.3 From 78ea8ef99e68eb606c96399895b224e91db15163 Mon Sep 17 00:00:00 2001 From: Ionut Andrei Oanca Date: Sat, 28 Nov 2020 16:03:02 +0100 Subject: Create common interface for SyncPlay requests --- .../SyncPlay/GroupController.cs | 12 ++-- .../SyncPlay/SyncPlayManager.cs | 69 ++++++++-------------- Jellyfin.Api/Controllers/SyncPlayController.cs | 13 ++-- .../SyncPlay/GroupStates/AbstractGroupState.cs | 4 +- .../SyncPlay/IGroupController.cs | 11 ++-- .../SyncPlay/IGroupPlaybackRequest.cs | 4 +- .../SyncPlay/ISyncPlayManager.cs | 12 ++-- .../SyncPlay/ISyncPlayRequest.cs | 16 +++++ .../PlaybackRequests/AbstractPlaybackRequest.cs | 29 +++++++++ .../PlaybackRequests/BufferGroupRequest.cs | 6 +- .../PlaybackRequests/IgnoreWaitGroupRequest.cs | 6 +- .../MovePlaylistItemGroupRequest.cs | 6 +- .../PlaybackRequests/NextTrackGroupRequest.cs | 6 +- .../SyncPlay/PlaybackRequests/PauseGroupRequest.cs | 6 +- .../SyncPlay/PlaybackRequests/PingGroupRequest.cs | 6 +- .../SyncPlay/PlaybackRequests/PlayGroupRequest.cs | 6 +- .../PlaybackRequests/PreviousTrackGroupRequest.cs | 6 +- .../SyncPlay/PlaybackRequests/QueueGroupRequest.cs | 6 +- .../SyncPlay/PlaybackRequests/ReadyGroupRequest.cs | 6 +- .../RemoveFromPlaylistGroupRequest.cs | 6 +- .../SyncPlay/PlaybackRequests/SeekGroupRequest.cs | 6 +- .../SetPlaylistItemGroupRequest.cs | 6 +- .../PlaybackRequests/SetRepeatModeGroupRequest.cs | 6 +- .../PlaybackRequests/SetShuffleModeGroupRequest.cs | 6 +- .../SyncPlay/PlaybackRequests/StopGroupRequest.cs | 6 +- .../PlaybackRequests/UnpauseGroupRequest.cs | 6 +- .../SyncPlay/Requests/JoinGroupRequest.cs | 29 +++++++++ .../SyncPlay/Requests/LeaveGroupRequest.cs | 13 ++++ .../SyncPlay/Requests/ListGroupsRequest.cs | 13 ++++ .../SyncPlay/Requests/NewGroupRequest.cs | 28 +++++++++ MediaBrowser.Model/SyncPlay/GroupRequestType.cs | 33 ----------- MediaBrowser.Model/SyncPlay/RequestType.cs | 33 +++++++++++ 32 files changed, 269 insertions(+), 152 deletions(-) create mode 100644 MediaBrowser.Controller/SyncPlay/ISyncPlayRequest.cs create mode 100644 MediaBrowser.Controller/SyncPlay/PlaybackRequests/AbstractPlaybackRequest.cs create mode 100644 MediaBrowser.Controller/SyncPlay/Requests/JoinGroupRequest.cs create mode 100644 MediaBrowser.Controller/SyncPlay/Requests/LeaveGroupRequest.cs create mode 100644 MediaBrowser.Controller/SyncPlay/Requests/ListGroupsRequest.cs create mode 100644 MediaBrowser.Controller/SyncPlay/Requests/NewGroupRequest.cs delete mode 100644 MediaBrowser.Model/SyncPlay/GroupRequestType.cs create mode 100644 MediaBrowser.Model/SyncPlay/RequestType.cs (limited to 'MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs') diff --git a/Emby.Server.Implementations/SyncPlay/GroupController.cs b/Emby.Server.Implementations/SyncPlay/GroupController.cs index 612fba5048..dc262f1cfc 100644 --- a/Emby.Server.Implementations/SyncPlay/GroupController.cs +++ b/Emby.Server.Implementations/SyncPlay/GroupController.cs @@ -12,8 +12,8 @@ using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay; using MediaBrowser.Controller.SyncPlay.GroupStates; using MediaBrowser.Controller.SyncPlay.Queue; +using MediaBrowser.Controller.SyncPlay.Requests; using MediaBrowser.Model.SyncPlay; -using MediaBrowser.Model.SyncPlay.RequestBodies; using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.SyncPlay @@ -257,7 +257,7 @@ namespace Emby.Server.Implementations.SyncPlay public bool IsGroupEmpty() => _participants.Count == 0; /// - public void CreateGroup(SessionInfo session, NewGroupRequestBody request, CancellationToken cancellationToken) + public void CreateGroup(SessionInfo session, NewGroupRequest request, CancellationToken cancellationToken) { GroupName = request.GroupName; AddSession(session); @@ -292,7 +292,7 @@ namespace Emby.Server.Implementations.SyncPlay } /// - public void SessionJoin(SessionInfo session, JoinGroupRequestBody request, CancellationToken cancellationToken) + public void SessionJoin(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken) { AddSession(session); @@ -308,7 +308,7 @@ namespace Emby.Server.Implementations.SyncPlay } /// - public void SessionRestore(SessionInfo session, JoinGroupRequestBody request, CancellationToken cancellationToken) + public void SessionRestore(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken) { var updateSession = NewSyncPlayGroupUpdate(GroupUpdateType.GroupJoined, GetInfo()); SendGroupUpdate(session, SyncPlayBroadcastType.CurrentSession, updateSession, cancellationToken); @@ -322,7 +322,7 @@ namespace Emby.Server.Implementations.SyncPlay } /// - public void SessionLeave(SessionInfo session, CancellationToken cancellationToken) + public void SessionLeave(SessionInfo session, LeaveGroupRequest request, CancellationToken cancellationToken) { _state.SessionLeaving(this, _state.Type, session, cancellationToken); @@ -343,7 +343,7 @@ namespace Emby.Server.Implementations.SyncPlay // The server's job is to maintain a consistent state for clients to reference // and notify clients of state changes. The actual syncing of media playback // happens client side. Clients are aware of the server's time and use it to sync. - _logger.LogInformation("Session {SessionId} requested {RequestType} in group {GroupId} that is {StateType}.", session.Id, request.Type, GroupId.ToString(), _state.Type); + _logger.LogInformation("Session {SessionId} requested {RequestType} in group {GroupId} that is {StateType}.", session.Id, request.Action, GroupId.ToString(), _state.Type); request.Apply(this, _state, session, cancellationToken); } diff --git a/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs b/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs index 5a0d619269..fbd3c3cfb2 100644 --- a/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs +++ b/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs @@ -5,8 +5,8 @@ using Jellyfin.Data.Enums; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay; +using MediaBrowser.Controller.SyncPlay.Requests; using MediaBrowser.Model.SyncPlay; -using MediaBrowser.Model.SyncPlay.RequestBodies; using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.SyncPlay @@ -94,10 +94,9 @@ namespace Emby.Server.Implementations.SyncPlay } /// - public void NewGroup(SessionInfo session, NewGroupRequestBody request, CancellationToken cancellationToken) + public void NewGroup(SessionInfo session, NewGroupRequest request, CancellationToken cancellationToken) { - // TODO: create abstract class for GroupRequests to avoid explicit request type here. - if (!IsRequestValid(session, GroupRequestType.NewGroup, request)) + if (!IsRequestValid(session, request)) { return; } @@ -111,7 +110,8 @@ namespace Emby.Server.Implementations.SyncPlay { if (IsSessionInGroup(session)) { - LeaveGroup(session, cancellationToken); + var leaveGroupRequest = new LeaveGroupRequest(); + LeaveGroup(session, leaveGroupRequest, cancellationToken); } var group = new GroupController(_loggerFactory, _userManager, _sessionManager, _libraryManager); @@ -124,10 +124,9 @@ namespace Emby.Server.Implementations.SyncPlay } /// - public void JoinGroup(SessionInfo session, Guid groupId, JoinGroupRequestBody request, CancellationToken cancellationToken) + public void JoinGroup(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken) { - // TODO: create abstract class for GroupRequests to avoid explicit request type here. - if (!IsRequestValid(session, GroupRequestType.JoinGroup, request)) + if (!IsRequestValid(session, request)) { return; } @@ -137,11 +136,11 @@ namespace Emby.Server.Implementations.SyncPlay // Locking required to access list of groups. lock (_groupsLock) { - _groups.TryGetValue(groupId, out IGroupController group); + _groups.TryGetValue(request.GroupId, out IGroupController group); if (group == null) { - _logger.LogWarning("Session {SessionId} tried to join group {GroupId} that does not exist.", session.Id, groupId); + _logger.LogWarning("Session {SessionId} tried to join group {GroupId} that does not exist.", session.Id, request.GroupId); var error = new GroupUpdate(Guid.Empty, GroupUpdateType.GroupDoesNotExist, string.Empty); _sessionManager.SendSyncPlayGroupUpdate(session, error, CancellationToken.None); @@ -165,13 +164,14 @@ namespace Emby.Server.Implementations.SyncPlay if (IsSessionInGroup(session)) { - if (FindJoinedGroupId(session).Equals(groupId)) + if (FindJoinedGroupId(session).Equals(request.GroupId)) { group.SessionRestore(session, request, cancellationToken); return; } - LeaveGroup(session, cancellationToken); + var leaveGroupRequest = new LeaveGroupRequest(); + LeaveGroup(session, leaveGroupRequest, cancellationToken); } AddSessionToGroup(session, group); @@ -182,10 +182,9 @@ namespace Emby.Server.Implementations.SyncPlay } /// - public void LeaveGroup(SessionInfo session, CancellationToken cancellationToken) + public void LeaveGroup(SessionInfo session, LeaveGroupRequest request, CancellationToken cancellationToken) { - // TODO: create abstract class for GroupRequests to avoid explicit request type here. - if (!IsRequestValid(session, GroupRequestType.LeaveGroup)) + if (!IsRequestValid(session, request)) { return; } @@ -210,7 +209,7 @@ namespace Emby.Server.Implementations.SyncPlay lock (group) { RemoveSessionFromGroup(session, group); - group.SessionLeave(session, cancellationToken); + group.SessionLeave(session, request, cancellationToken); if (group.IsGroupEmpty()) { @@ -223,10 +222,9 @@ namespace Emby.Server.Implementations.SyncPlay } /// - public List ListGroups(SessionInfo session) + public List ListGroups(SessionInfo session, ListGroupsRequest request) { - // TODO: create abstract class for GroupRequests to avoid explicit request type here. - if (!IsRequestValid(session, GroupRequestType.ListGroups)) + if (!IsRequestValid(session, request)) { return new List(); } @@ -256,8 +254,7 @@ namespace Emby.Server.Implementations.SyncPlay /// public void HandleRequest(SessionInfo session, IGroupPlaybackRequest request, CancellationToken cancellationToken) { - // TODO: create abstract class for GroupRequests to avoid explicit request type here. - if (!IsRequestValid(session, GroupRequestType.Playback, request)) + if (!IsRequestValid(session, request)) { return; } @@ -304,11 +301,8 @@ namespace Emby.Server.Implementations.SyncPlay return; } - var request = new JoinGroupRequestBody() - { - GroupId = groupId - }; - JoinGroup(session, groupId, request, CancellationToken.None); + var request = new JoinGroupRequest(groupId); + JoinGroup(session, request, CancellationToken.None); } /// @@ -409,13 +403,11 @@ namespace Emby.Server.Implementations.SyncPlay /// Checks if a given session is allowed to make a given request. /// /// The session. - /// The request type. /// The request. - /// Whether to check if request is null. - /// true if the request is valid, false otherwise. Will return false also when session is null. - private bool IsRequestValid(SessionInfo session, GroupRequestType requestType, T request, bool checkRequest = true) + /// true if the request is valid, false otherwise. Will return false also when session or request is null. + private bool IsRequestValid(SessionInfo session, ISyncPlayRequest request) { - if (session == null || (request == null && checkRequest)) + if (session == null || (request == null)) { return false; } @@ -424,7 +416,7 @@ namespace Emby.Server.Implementations.SyncPlay if (user.SyncPlayAccess == SyncPlayAccess.None) { - _logger.LogWarning("Session {SessionId} requested {RequestType} but does not have access to SyncPlay.", session.Id, requestType); + _logger.LogWarning("Session {SessionId} requested {RequestType} but does not have access to SyncPlay.", session.Id, request.Type); // TODO: rename to a more generic error. Next PR will fix this. var error = new GroupUpdate(Guid.Empty, GroupUpdateType.JoinGroupDenied, string.Empty); @@ -432,7 +424,7 @@ namespace Emby.Server.Implementations.SyncPlay return false; } - if (requestType.Equals(GroupRequestType.NewGroup) && user.SyncPlayAccess != SyncPlayAccess.CreateAndJoinGroups) + if (request.Type.Equals(RequestType.NewGroup) && user.SyncPlayAccess != SyncPlayAccess.CreateAndJoinGroups) { _logger.LogWarning("Session {SessionId} does not have permission to create groups.", session.Id); @@ -443,16 +435,5 @@ namespace Emby.Server.Implementations.SyncPlay return true; } - - /// - /// Checks if a given session is allowed to make a given type of request. - /// - /// The session. - /// The request type. - /// true if the request is valid, false otherwise. Will return false also when session is null. - private bool IsRequestValid(SessionInfo session, GroupRequestType requestType) - { - return IsRequestValid(session, requestType, session, false); - } } } diff --git a/Jellyfin.Api/Controllers/SyncPlayController.cs b/Jellyfin.Api/Controllers/SyncPlayController.cs index e8c9a09568..ed5ea3c8a7 100644 --- a/Jellyfin.Api/Controllers/SyncPlayController.cs +++ b/Jellyfin.Api/Controllers/SyncPlayController.cs @@ -8,6 +8,7 @@ using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay; using MediaBrowser.Controller.SyncPlay.PlaybackRequests; +using MediaBrowser.Controller.SyncPlay.Requests; using MediaBrowser.Model.SyncPlay; using MediaBrowser.Model.SyncPlay.RequestBodies; using Microsoft.AspNetCore.Authorization; @@ -54,7 +55,8 @@ namespace Jellyfin.Api.Controllers [FromBody, Required] NewGroupRequestBody requestData) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - _syncPlayManager.NewGroup(currentSession, requestData, CancellationToken.None); + var syncPlayRequest = new NewGroupRequest(requestData.GroupName); + _syncPlayManager.NewGroup(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -70,7 +72,8 @@ namespace Jellyfin.Api.Controllers [FromBody, Required] JoinGroupRequestBody requestData) { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - _syncPlayManager.JoinGroup(currentSession, requestData.GroupId, requestData, CancellationToken.None); + var syncPlayRequest = new JoinGroupRequest(requestData.GroupId); + _syncPlayManager.JoinGroup(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -84,7 +87,8 @@ namespace Jellyfin.Api.Controllers public ActionResult SyncPlayLeaveGroup() { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - _syncPlayManager.LeaveGroup(currentSession, CancellationToken.None); + var syncPlayRequest = new LeaveGroupRequest(); + _syncPlayManager.LeaveGroup(currentSession, syncPlayRequest, CancellationToken.None); return NoContent(); } @@ -98,7 +102,8 @@ namespace Jellyfin.Api.Controllers public ActionResult> SyncPlayGetGroups() { var currentSession = RequestHelpers.GetSession(_sessionManager, _authorizationContext, Request); - return Ok(_syncPlayManager.ListGroups(currentSession)); + var syncPlayRequest = new ListGroupsRequest(); + return Ok(_syncPlayManager.ListGroups(currentSession, syncPlayRequest)); } /// diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs index 057488d6b4..0b15e3ae4a 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs @@ -209,14 +209,14 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates protected void SendGroupStateUpdate(IGroupStateContext context, IGroupPlaybackRequest reason, SessionInfo session, CancellationToken cancellationToken) { // Notify relevant state change event. - var stateUpdate = new GroupStateUpdate(Type, reason.Type); + var stateUpdate = new GroupStateUpdate(Type, reason.Action); var update = context.NewSyncPlayGroupUpdate(GroupUpdateType.StateUpdate, stateUpdate); context.SendGroupUpdate(session, SyncPlayBroadcastType.AllGroup, update, cancellationToken); } private void UnhandledRequest(IGroupPlaybackRequest request) { - _logger.LogWarning("Unhandled request of type {RequestType} in {StateType} state.", request.Type, Type); + _logger.LogWarning("Unhandled request of type {RequestType} in {StateType} state.", request.Action, Type); } } } diff --git a/MediaBrowser.Controller/SyncPlay/IGroupController.cs b/MediaBrowser.Controller/SyncPlay/IGroupController.cs index 5bcc3e2ca3..07f9659dd1 100644 --- a/MediaBrowser.Controller/SyncPlay/IGroupController.cs +++ b/MediaBrowser.Controller/SyncPlay/IGroupController.cs @@ -3,8 +3,8 @@ using System.Threading; using Jellyfin.Data.Entities; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay.Queue; +using MediaBrowser.Controller.SyncPlay.Requests; using MediaBrowser.Model.SyncPlay; -using MediaBrowser.Model.SyncPlay.RequestBodies; namespace MediaBrowser.Controller.SyncPlay { @@ -37,7 +37,7 @@ namespace MediaBrowser.Controller.SyncPlay /// The session. /// The request. /// The cancellation token. - void CreateGroup(SessionInfo session, NewGroupRequestBody request, CancellationToken cancellationToken); + void CreateGroup(SessionInfo session, NewGroupRequest request, CancellationToken cancellationToken); /// /// Adds the session to the group. @@ -45,7 +45,7 @@ namespace MediaBrowser.Controller.SyncPlay /// The session. /// The request. /// The cancellation token. - void SessionJoin(SessionInfo session, JoinGroupRequestBody request, CancellationToken cancellationToken); + void SessionJoin(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken); /// /// Restores the state of a session that already joined the group. @@ -53,14 +53,15 @@ namespace MediaBrowser.Controller.SyncPlay /// The session. /// The request. /// The cancellation token. - void SessionRestore(SessionInfo session, JoinGroupRequestBody request, CancellationToken cancellationToken); + void SessionRestore(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken); /// /// Removes the session from the group. /// /// The session. + /// The request. /// The cancellation token. - void SessionLeave(SessionInfo session, CancellationToken cancellationToken); + void SessionLeave(SessionInfo session, LeaveGroupRequest request, CancellationToken cancellationToken); /// /// Handles the requested action by the session. diff --git a/MediaBrowser.Controller/SyncPlay/IGroupPlaybackRequest.cs b/MediaBrowser.Controller/SyncPlay/IGroupPlaybackRequest.cs index 3b195e98ca..201f29952f 100644 --- a/MediaBrowser.Controller/SyncPlay/IGroupPlaybackRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/IGroupPlaybackRequest.cs @@ -7,13 +7,13 @@ namespace MediaBrowser.Controller.SyncPlay /// /// Interface IGroupPlaybackRequest. /// - public interface IGroupPlaybackRequest + public interface IGroupPlaybackRequest : ISyncPlayRequest { /// /// Gets the playback request type. /// /// The playback request type. - PlaybackRequestType Type { get; } + PlaybackRequestType Action { get; } /// /// Applies the request to a group. diff --git a/MediaBrowser.Controller/SyncPlay/ISyncPlayManager.cs b/MediaBrowser.Controller/SyncPlay/ISyncPlayManager.cs index 26fcb009ca..146e4351df 100644 --- a/MediaBrowser.Controller/SyncPlay/ISyncPlayManager.cs +++ b/MediaBrowser.Controller/SyncPlay/ISyncPlayManager.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Threading; using MediaBrowser.Controller.Session; +using MediaBrowser.Controller.SyncPlay.Requests; using MediaBrowser.Model.SyncPlay; using MediaBrowser.Model.SyncPlay.RequestBodies; @@ -18,30 +19,31 @@ namespace MediaBrowser.Controller.SyncPlay /// The session that's creating the group. /// The request. /// The cancellation token. - void NewGroup(SessionInfo session, NewGroupRequestBody request, CancellationToken cancellationToken); + void NewGroup(SessionInfo session, NewGroupRequest request, CancellationToken cancellationToken); /// /// Adds the session to a group. /// /// The session. - /// The group identifier. /// The request. /// The cancellation token. - void JoinGroup(SessionInfo session, Guid groupId, JoinGroupRequestBody request, CancellationToken cancellationToken); + void JoinGroup(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken); /// /// Removes the session from a group. /// /// The session. + /// The request. /// The cancellation token. - void LeaveGroup(SessionInfo session, CancellationToken cancellationToken); + void LeaveGroup(SessionInfo session, LeaveGroupRequest request, CancellationToken cancellationToken); /// /// Gets list of available groups for a session. /// /// The session. + /// The request. /// The list of available groups. - List ListGroups(SessionInfo session); + List ListGroups(SessionInfo session, ListGroupsRequest request); /// /// Handle a request by a session in a group. diff --git a/MediaBrowser.Controller/SyncPlay/ISyncPlayRequest.cs b/MediaBrowser.Controller/SyncPlay/ISyncPlayRequest.cs new file mode 100644 index 0000000000..bf19817732 --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/ISyncPlayRequest.cs @@ -0,0 +1,16 @@ +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay +{ + /// + /// Interface ISyncPlayRequest. + /// + public interface ISyncPlayRequest + { + /// + /// Gets the request type. + /// + /// The request type. + RequestType Type { get; } + } +} diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/AbstractPlaybackRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/AbstractPlaybackRequest.cs new file mode 100644 index 0000000000..4090f65b9c --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/AbstractPlaybackRequest.cs @@ -0,0 +1,29 @@ +using System.Threading; +using MediaBrowser.Controller.Session; +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests +{ + /// + /// Class AbstractPlaybackRequest. + /// + public abstract class AbstractPlaybackRequest : IGroupPlaybackRequest + { + /// + /// Initializes a new instance of the class. + /// + protected AbstractPlaybackRequest() + { + // Do nothing. + } + + /// + public RequestType Type { get; } = RequestType.Playback; + + /// + public abstract PlaybackRequestType Action { get; } + + /// + public abstract void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken); + } +} diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs index a12ab96b77..2981dbbdd6 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs @@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class BufferGroupRequest. /// - public class BufferGroupRequest : IGroupPlaybackRequest + public class BufferGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -50,10 +50,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public string PlaylistItemId { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.Buffer; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Buffer; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs index 25034cb10b..a375895ad0 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class IgnoreWaitGroupRequest. /// - public class IgnoreWaitGroupRequest : IGroupPlaybackRequest + public class IgnoreWaitGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public bool IgnoreWait { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.IgnoreWait; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.IgnoreWait; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs index a12eff8b84..efca4ed3ef 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class MovePlaylistItemGroupRequest. /// - public class MovePlaylistItemGroupRequest : IGroupPlaybackRequest + public class MovePlaylistItemGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -33,10 +33,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public int NewIndex { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.MovePlaylistItem; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.MovePlaylistItem; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs index f87bbc556d..73b7d0908b 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextTrackGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class NextTrackGroupRequest. /// - public class NextTrackGroupRequest : IGroupPlaybackRequest + public class NextTrackGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public string PlaylistItemId { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.NextTrack; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.NextTrack; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs index 0dcd1423fd..8ce2b1fc80 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs @@ -7,13 +7,13 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class PauseGroupRequest. /// - public class PauseGroupRequest : IGroupPlaybackRequest + public class PauseGroupRequest : AbstractPlaybackRequest { /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.Pause; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Pause; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs index 2528bb3e70..19c940cdf8 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class PingGroupRequest. /// - public class PingGroupRequest : IGroupPlaybackRequest + public class PingGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public long Ping { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.Ping; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Ping; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs index dbe2987357..88e0ebad2b 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs @@ -9,7 +9,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class PlayGroupRequest. /// - public class PlayGroupRequest : IGroupPlaybackRequest + public class PlayGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -43,10 +43,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public long StartPositionTicks { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.Play; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Play; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs index 206fef3312..4c70beb0ef 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousTrackGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class PreviousTrackGroupRequest. /// - public class PreviousTrackGroupRequest : IGroupPlaybackRequest + public class PreviousTrackGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public string PlaylistItemId { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.PreviousTrack; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.PreviousTrack; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs index d6247ddd6d..ba5e3e2327 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs @@ -9,7 +9,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class QueueGroupRequest. /// - public class QueueGroupRequest : IGroupPlaybackRequest + public class QueueGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -35,10 +35,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public GroupQueueMode Mode { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.Queue; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Queue; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs index a2b3553cee..b09db4ba80 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs @@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class ReadyGroupRequest. /// - public class ReadyGroupRequest : IGroupPlaybackRequest + public class ReadyGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -50,10 +50,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public string PlaylistItemId { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.Ready; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Ready; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs index dc7ba8465c..dac1914aa7 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs @@ -9,7 +9,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class RemoveFromPlaylistGroupRequest. /// - public class RemoveFromPlaylistGroupRequest : IGroupPlaybackRequest + public class RemoveFromPlaylistGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -27,10 +27,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public IReadOnlyList PlaylistItemIds { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.RemoveFromPlaylist; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.RemoveFromPlaylist; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs index f7bfc19788..41e28467c0 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class SeekGroupRequest. /// - public class SeekGroupRequest : IGroupPlaybackRequest + public class SeekGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public long PositionTicks { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.Seek; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Seek; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs index 2ca33c1ccf..58fed3fa07 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class SetPlaylistItemGroupRequest. /// - public class SetPlaylistItemGroupRequest : IGroupPlaybackRequest + public class SetPlaylistItemGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public string PlaylistItemId { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.SetPlaylistItem; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.SetPlaylistItem; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs index cd4505e4d0..6a5ec1d117 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class SetRepeatModeGroupRequest. /// - public class SetRepeatModeGroupRequest : IGroupPlaybackRequest + public class SetRepeatModeGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public GroupRepeatMode Mode { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.SetRepeatMode; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.SetRepeatMode; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs index 4530a34c02..fe007c8d89 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class SetShuffleModeGroupRequest. /// - public class SetShuffleModeGroupRequest : IGroupPlaybackRequest + public class SetShuffleModeGroupRequest : AbstractPlaybackRequest { /// /// Initializes a new instance of the class. @@ -25,10 +25,10 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests public GroupShuffleMode Mode { get; } /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.SetShuffleMode; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.SetShuffleMode; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs index ec01cd1105..c42e229d1f 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs @@ -7,13 +7,13 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class StopGroupRequest. /// - public class StopGroupRequest : IGroupPlaybackRequest + public class StopGroupRequest : AbstractPlaybackRequest { /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.Stop; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Stop; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs index bdf4fd4767..b4c1744e95 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs @@ -7,13 +7,13 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// /// Class UnpauseGroupRequest. /// - public class UnpauseGroupRequest : IGroupPlaybackRequest + public class UnpauseGroupRequest : AbstractPlaybackRequest { /// - public PlaybackRequestType Type { get; } = PlaybackRequestType.Unpause; + public override PlaybackRequestType Action { get; } = PlaybackRequestType.Unpause; /// - public void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) + public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { state.HandleRequest(context, state.Type, this, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/Requests/JoinGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/Requests/JoinGroupRequest.cs new file mode 100644 index 0000000000..38c9e8e20c --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/Requests/JoinGroupRequest.cs @@ -0,0 +1,29 @@ +using System; +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay.Requests +{ + /// + /// Class JoinGroupRequest. + /// + public class JoinGroupRequest : ISyncPlayRequest + { + /// + /// Initializes a new instance of the class. + /// + /// The identifier of the group to join. + public JoinGroupRequest(Guid groupId) + { + GroupId = groupId; + } + + /// + /// Gets the group identifier. + /// + /// The identifier of the group to join. + public Guid GroupId { get; } + + /// + public RequestType Type { get; } = RequestType.JoinGroup; + } +} diff --git a/MediaBrowser.Controller/SyncPlay/Requests/LeaveGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/Requests/LeaveGroupRequest.cs new file mode 100644 index 0000000000..545778264f --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/Requests/LeaveGroupRequest.cs @@ -0,0 +1,13 @@ +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay.Requests +{ + /// + /// Class LeaveGroupRequest. + /// + public class LeaveGroupRequest : ISyncPlayRequest + { + /// + public RequestType Type { get; } = RequestType.LeaveGroup; + } +} diff --git a/MediaBrowser.Controller/SyncPlay/Requests/ListGroupsRequest.cs b/MediaBrowser.Controller/SyncPlay/Requests/ListGroupsRequest.cs new file mode 100644 index 0000000000..4a234fdab5 --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/Requests/ListGroupsRequest.cs @@ -0,0 +1,13 @@ +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay.Requests +{ + /// + /// Class ListGroupsRequest. + /// + public class ListGroupsRequest : ISyncPlayRequest + { + /// + public RequestType Type { get; } = RequestType.ListGroups; + } +} diff --git a/MediaBrowser.Controller/SyncPlay/Requests/NewGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/Requests/NewGroupRequest.cs new file mode 100644 index 0000000000..1321f0de8e --- /dev/null +++ b/MediaBrowser.Controller/SyncPlay/Requests/NewGroupRequest.cs @@ -0,0 +1,28 @@ +using MediaBrowser.Model.SyncPlay; + +namespace MediaBrowser.Controller.SyncPlay.Requests +{ + /// + /// Class NewGroupRequest. + /// + public class NewGroupRequest : ISyncPlayRequest + { + /// + /// Initializes a new instance of the class. + /// + /// The name of the new group. + public NewGroupRequest(string groupName) + { + GroupName = groupName; + } + + /// + /// Gets the group name. + /// + /// The name of the new group. + public string GroupName { get; } + + /// + public RequestType Type { get; } = RequestType.NewGroup; + } +} diff --git a/MediaBrowser.Model/SyncPlay/GroupRequestType.cs b/MediaBrowser.Model/SyncPlay/GroupRequestType.cs deleted file mode 100644 index 75c0712364..0000000000 --- a/MediaBrowser.Model/SyncPlay/GroupRequestType.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace MediaBrowser.Model.SyncPlay -{ - /// - /// Enum GroupRequestType. - /// - public enum GroupRequestType - { - /// - /// A user is requesting to create a new group. - /// - NewGroup = 0, - - /// - /// A user is requesting to join a group. - /// - JoinGroup = 1, - - /// - /// A user is requesting to leave a group. - /// - LeaveGroup = 2, - - /// - /// A user is requesting the list of available groups. - /// - ListGroups = 3, - - /// - /// A user is sending a playback command to a group. - /// - Playback = 4 - } -} diff --git a/MediaBrowser.Model/SyncPlay/RequestType.cs b/MediaBrowser.Model/SyncPlay/RequestType.cs new file mode 100644 index 0000000000..a6e397dcd6 --- /dev/null +++ b/MediaBrowser.Model/SyncPlay/RequestType.cs @@ -0,0 +1,33 @@ +namespace MediaBrowser.Model.SyncPlay +{ + /// + /// Enum RequestType. + /// + public enum RequestType + { + /// + /// A user is requesting to create a new group. + /// + NewGroup = 0, + + /// + /// A user is requesting to join a group. + /// + JoinGroup = 1, + + /// + /// A user is requesting to leave a group. + /// + LeaveGroup = 2, + + /// + /// A user is requesting the list of available groups. + /// + ListGroups = 3, + + /// + /// A user is sending a playback command to a group. + /// + Playback = 4 + } +} -- cgit v1.2.3 From cc64ee483d6620319d148ad27dbd1e26d8195ea6 Mon Sep 17 00:00:00 2001 From: Ionut Andrei Oanca Date: Fri, 4 Dec 2020 23:16:15 +0100 Subject: Reorder parameters in HandleRequest --- Emby.Server.Implementations/SyncPlay/Group.cs | 10 +++ .../SyncPlay/SyncPlayManager.cs | 1 + .../SyncPlay/GroupStates/AbstractGroupState.cs | 40 ++++++------ .../SyncPlay/GroupStates/IdleGroupState.cs | 26 ++++---- .../SyncPlay/GroupStates/PausedGroupState.cs | 32 +++++----- .../SyncPlay/GroupStates/PlayingGroupState.cs | 32 +++++----- .../SyncPlay/GroupStates/WaitingGroupState.cs | 38 ++++++------ MediaBrowser.Controller/SyncPlay/IGroupState.cs | 72 +++++++++++----------- .../PlaybackRequests/BufferGroupRequest.cs | 2 +- .../PlaybackRequests/IgnoreWaitGroupRequest.cs | 2 +- .../MovePlaylistItemGroupRequest.cs | 2 +- .../PlaybackRequests/NextItemGroupRequest.cs | 2 +- .../SyncPlay/PlaybackRequests/PauseGroupRequest.cs | 2 +- .../SyncPlay/PlaybackRequests/PingGroupRequest.cs | 2 +- .../SyncPlay/PlaybackRequests/PlayGroupRequest.cs | 2 +- .../PlaybackRequests/PreviousItemGroupRequest.cs | 2 +- .../SyncPlay/PlaybackRequests/QueueGroupRequest.cs | 2 +- .../SyncPlay/PlaybackRequests/ReadyGroupRequest.cs | 2 +- .../RemoveFromPlaylistGroupRequest.cs | 2 +- .../SyncPlay/PlaybackRequests/SeekGroupRequest.cs | 2 +- .../SetPlaylistItemGroupRequest.cs | 2 +- .../PlaybackRequests/SetRepeatModeGroupRequest.cs | 2 +- .../PlaybackRequests/SetShuffleModeGroupRequest.cs | 2 +- .../SyncPlay/PlaybackRequests/StopGroupRequest.cs | 2 +- .../PlaybackRequests/UnpauseGroupRequest.cs | 2 +- 25 files changed, 148 insertions(+), 137 deletions(-) (limited to 'MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs') diff --git a/Emby.Server.Implementations/SyncPlay/Group.cs b/Emby.Server.Implementations/SyncPlay/Group.cs index b5031b708b..7c2ad2477a 100644 --- a/Emby.Server.Implementations/SyncPlay/Group.cs +++ b/Emby.Server.Implementations/SyncPlay/Group.cs @@ -332,6 +332,16 @@ namespace Emby.Server.Implementations.SyncPlay // and notify clients of state changes. The actual syncing of media playback // happens client side. Clients are aware of the server's time and use it to sync. _logger.LogInformation("Session {SessionId} requested {RequestType} in group {GroupId} that is {StateType}.", session.Id, request.Action, GroupId.ToString(), _state.Type); + + // Apply requested changes to this group given its current state. + // Every request has a slightly different outcome depending on the group's state. + // There are currently four different group states that accomplish different goals: + // - Idle: in this state no media is playing and clients should be idle (playback is stopped). + // - Waiting: in this state the group is waiting for all the clients to be ready to start the playback, + // that is, they've either finished loading the media for the first time or they've finished buffering. + // Once all clients report to be ready the group's state can change to Playing or Paused. + // - Playing: clients have some media loaded and playback is unpaused. + // - Paused: clients have some media loaded but playback is currently paused. request.Apply(this, _state, session, cancellationToken); } diff --git a/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs b/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs index e43f5c2c31..348213ee15 100644 --- a/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs +++ b/Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs @@ -305,6 +305,7 @@ namespace Emby.Server.Implementations.SyncPlay return; } + // Apply requested changes to group. group.HandleRequest(session, request, cancellationToken); } } diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs index 5e3d4a2528..e3de22db38 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs @@ -44,27 +44,27 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public abstract void SessionLeaving(IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, IGroupPlaybackRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(IGroupPlaybackRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { UnhandledRequest(request); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, PlayGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(PlayGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { UnhandledRequest(request); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetPlaylistItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(SetPlaylistItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, RemoveFromPlaylistGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(RemoveFromPlaylistGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { var playingItemRemoved = context.RemoveFromPlayQueue(request.PlaylistItemIds); @@ -79,12 +79,12 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates IGroupState idleState = new IdleGroupState(LoggerFactory); context.SetState(idleState); var stopRequest = new StopGroupRequest(); - idleState.HandleRequest(context, Type, stopRequest, session, cancellationToken); + idleState.HandleRequest(stopRequest, context, Type, session, cancellationToken); } } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, MovePlaylistItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(MovePlaylistItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { var result = context.MoveItemInPlayQueue(request.PlaylistItemId, request.NewIndex); @@ -100,7 +100,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, QueueGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(QueueGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { var result = context.AddToPlayQueue(request.ItemIds, request.Mode); @@ -121,55 +121,55 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, UnpauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(UnpauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { UnhandledRequest(request); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, PauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(PauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { UnhandledRequest(request); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, StopGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(StopGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { UnhandledRequest(request); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, SeekGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(SeekGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { UnhandledRequest(request); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, BufferGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(BufferGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { UnhandledRequest(request); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, ReadyGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(ReadyGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { UnhandledRequest(request); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, NextItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(NextItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { UnhandledRequest(request); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, PreviousItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(PreviousItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { UnhandledRequest(request); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetRepeatModeGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(SetRepeatModeGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { context.SetRepeatMode(request.Mode); var playQueueUpdate = context.GetPlayQueueUpdate(PlayQueueUpdateReason.RepeatMode); @@ -178,7 +178,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetShuffleModeGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(SetShuffleModeGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { context.SetShuffleMode(request.Mode); var playQueueUpdate = context.GetPlayQueueUpdate(PlayQueueUpdateReason.ShuffleMode); @@ -187,14 +187,14 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, PingGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(PingGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Collected pings are used to account for network latency when unpausing playback. context.UpdatePing(session, request.Ping); } /// - public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, IgnoreWaitGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public virtual void HandleRequest(IgnoreWaitGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { context.SetIgnoreGroupWait(session, request.IgnoreWait); } diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs index 8074d5a96b..12ce6c8f82 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs @@ -45,69 +45,69 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PlayGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PlayGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, UnpauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(UnpauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { SendStopCommand(context, prevState, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, StopGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(StopGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { SendStopCommand(context, prevState, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, SeekGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(SeekGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { SendStopCommand(context, prevState, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, BufferGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(BufferGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { SendStopCommand(context, prevState, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, ReadyGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(ReadyGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { SendStopCommand(context, prevState, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, NextItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(NextItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PreviousItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PreviousItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } private void SendStopCommand(IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs index 28e5db950d..fba8ba9e2e 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs @@ -49,25 +49,25 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PlayGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PlayGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, UnpauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(UnpauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var playingState = new PlayingGroupState(LoggerFactory); context.SetState(playingState); - playingState.HandleRequest(context, Type, request, session, cancellationToken); + playingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { if (!prevState.Equals(Type)) { @@ -98,34 +98,34 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, StopGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(StopGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var idleState = new IdleGroupState(LoggerFactory); context.SetState(idleState); - idleState.HandleRequest(context, Type, request, session, cancellationToken); + idleState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, SeekGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(SeekGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, BufferGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(BufferGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, ReadyGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(ReadyGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { if (prevState.Equals(Type)) { @@ -145,21 +145,21 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, NextItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(NextItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PreviousItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PreviousItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs index 278a0af084..9797b247ce 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs @@ -54,16 +54,16 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PlayGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PlayGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, UnpauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(UnpauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { if (!prevState.Equals(Type)) { @@ -91,34 +91,34 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var pausedState = new PausedGroupState(LoggerFactory); context.SetState(pausedState); - pausedState.HandleRequest(context, Type, request, session, cancellationToken); + pausedState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, StopGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(StopGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var idleState = new IdleGroupState(LoggerFactory); context.SetState(idleState); - idleState.HandleRequest(context, Type, request, session, cancellationToken); + idleState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, SeekGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(SeekGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, BufferGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(BufferGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { if (IgnoreBuffering) { @@ -128,11 +128,11 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, ReadyGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(ReadyGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { if (prevState.Equals(Type)) { @@ -148,21 +148,21 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, NextItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(NextItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PreviousItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PreviousItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Change state. var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); - waitingState.HandleRequest(context, Type, request, session, cancellationToken); + waitingState.HandleRequest(request, context, Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs index c2820604f3..507573653f 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs @@ -108,7 +108,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates var playingState = new PlayingGroupState(LoggerFactory); context.SetState(playingState); var unpauseRequest = new UnpauseGroupRequest(); - playingState.HandleRequest(context, Type, unpauseRequest, session, cancellationToken); + playingState.HandleRequest(unpauseRequest, context, Type, session, cancellationToken); } else { @@ -122,7 +122,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PlayGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PlayGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Save state if first event. if (!InitialStateSet) @@ -160,7 +160,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetPlaylistItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(SetPlaylistItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Save state if first event. if (!InitialStateSet) @@ -198,7 +198,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, UnpauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(UnpauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Save state if first event. if (!InitialStateSet) @@ -236,7 +236,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates IgnoreBuffering = true }; context.SetState(playingState); - playingState.HandleRequest(context, Type, request, session, cancellationToken); + playingState.HandleRequest(request, context, Type, session, cancellationToken); } else { @@ -250,7 +250,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Save state if first event. if (!InitialStateSet) @@ -267,7 +267,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, StopGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(StopGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Save state if first event. if (!InitialStateSet) @@ -279,11 +279,11 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Change state. var idleState = new IdleGroupState(LoggerFactory); context.SetState(idleState); - idleState.HandleRequest(context, Type, request, session, cancellationToken); + idleState.HandleRequest(request, context, Type, session, cancellationToken); } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, SeekGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(SeekGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Save state if first event. if (!InitialStateSet) @@ -319,7 +319,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, BufferGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(BufferGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Save state if first event. if (!InitialStateSet) @@ -393,7 +393,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, ReadyGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(ReadyGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Save state if first event. if (!InitialStateSet) @@ -511,7 +511,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Change state. var playingState = new PlayingGroupState(LoggerFactory); context.SetState(playingState); - playingState.HandleRequest(context, Type, request, session, cancellationToken); + playingState.HandleRequest(request, context, Type, session, cancellationToken); } } else @@ -548,19 +548,19 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates if (InitialState.Equals(GroupStateType.Playing)) { // Group went from playing to waiting state and a pause request occured while waiting. - var pauserequest = new PauseGroupRequest(); - pausedState.HandleRequest(context, Type, pauserequest, session, cancellationToken); + var pauseRequest = new PauseGroupRequest(); + pausedState.HandleRequest(pauseRequest, context, Type, session, cancellationToken); } else if (InitialState.Equals(GroupStateType.Paused)) { - pausedState.HandleRequest(context, Type, request, session, cancellationToken); + pausedState.HandleRequest(request, context, Type, session, cancellationToken); } } } } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, NextItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(NextItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Save state if first event. if (!InitialStateSet) @@ -606,7 +606,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PreviousItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(PreviousItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Save state if first event. if (!InitialStateSet) @@ -652,7 +652,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } /// - public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, IgnoreWaitGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + public override void HandleRequest(IgnoreWaitGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { context.SetIgnoreGroupWait(session, request.IgnoreWait); @@ -666,7 +666,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates var playingState = new PlayingGroupState(LoggerFactory); context.SetState(playingState); var unpauseRequest = new UnpauseGroupRequest(); - playingState.HandleRequest(context, Type, unpauseRequest, session, cancellationToken); + playingState.HandleRequest(unpauseRequest, context, Type, session, cancellationToken); } else { diff --git a/MediaBrowser.Controller/SyncPlay/IGroupState.cs b/MediaBrowser.Controller/SyncPlay/IGroupState.cs index 89a8e2e2e7..95ee09985f 100644 --- a/MediaBrowser.Controller/SyncPlay/IGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/IGroupState.cs @@ -37,181 +37,181 @@ namespace MediaBrowser.Controller.SyncPlay /// /// Generic handler. Context's state can change. /// + /// The generic request. /// The context of the state. /// The previous state. - /// The generic request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, IGroupPlaybackRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(IGroupPlaybackRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a play request from a session. Context's state can change. /// + /// The play request. /// The context of the state. /// The previous state. - /// The play request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, PlayGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(PlayGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a set-playlist-item request from a session. Context's state can change. /// + /// The set-playlist-item request. /// The context of the state. /// The previous state. - /// The set-playlist-item request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetPlaylistItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(SetPlaylistItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a remove-items request from a session. Context's state can change. /// + /// The remove-items request. /// The context of the state. /// The previous state. - /// The remove-items request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, RemoveFromPlaylistGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(RemoveFromPlaylistGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a move-playlist-item request from a session. Context's state should not change. /// + /// The move-playlist-item request. /// The context of the state. /// The previous state. - /// The move-playlist-item request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, MovePlaylistItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(MovePlaylistItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a queue request from a session. Context's state should not change. /// + /// The queue request. /// The context of the state. /// The previous state. - /// The queue request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, QueueGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(QueueGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles an unpause request from a session. Context's state can change. /// + /// The unpause request. /// The context of the state. /// The previous state. - /// The unpause request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, UnpauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(UnpauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a pause request from a session. Context's state can change. /// + /// The pause request. /// The context of the state. /// The previous state. - /// The pause request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, PauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(PauseGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a stop request from a session. Context's state can change. /// + /// The stop request. /// The context of the state. /// The previous state. - /// The stop request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, StopGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(StopGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a seek request from a session. Context's state can change. /// + /// The seek request. /// The context of the state. /// The previous state. - /// The seek request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, SeekGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(SeekGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a buffer request from a session. Context's state can change. /// + /// The buffer request. /// The context of the state. /// The previous state. - /// The buffer request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, BufferGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(BufferGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a ready request from a session. Context's state can change. /// + /// The ready request. /// The context of the state. /// The previous state. - /// The ready request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, ReadyGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(ReadyGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a next-item request from a session. Context's state can change. /// + /// The next-item request. /// The context of the state. /// The previous state. - /// The next-item request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, NextItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(NextItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a previous-item request from a session. Context's state can change. /// + /// The previous-item request. /// The context of the state. /// The previous state. - /// The previous-item request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, PreviousItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(PreviousItemGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a set-repeat-mode request from a session. Context's state should not change. /// + /// The repeat-mode request. /// The context of the state. /// The previous state. - /// The repeat-mode request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetRepeatModeGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(SetRepeatModeGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a set-shuffle-mode request from a session. Context's state should not change. /// + /// The shuffle-mode request. /// The context of the state. /// The previous state. - /// The shuffle-mode request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetShuffleModeGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(SetShuffleModeGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Updates the ping of a session. Context's state should not change. /// + /// The ping request. /// The context of the state. /// The previous state. - /// The ping request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, PingGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(PingGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a ignore-wait request from a session. Context's state can change. /// + /// The ignore-wait request. /// The context of the state. /// The previous state. - /// The ignore-wait request. /// The session. /// The cancellation token. - void HandleRequest(IGroupStateContext context, GroupStateType prevState, IgnoreWaitGroupRequest request, SessionInfo session, CancellationToken cancellationToken); + void HandleRequest(IgnoreWaitGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs index 39e0ec2099..11cc99fcda 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/BufferGroupRequest.cs @@ -55,7 +55,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs index a375895ad0..64ef791ed7 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/IgnoreWaitGroupRequest.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs index 7ebf67af1d..9cd8da5668 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/MovePlaylistItemGroupRequest.cs @@ -39,7 +39,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextItemGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextItemGroupRequest.cs index 478414137c..e0ae0deb76 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextItemGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/NextItemGroupRequest.cs @@ -31,7 +31,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs index 8ce2b1fc80..2869b35f77 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PauseGroupRequest.cs @@ -15,7 +15,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs index 19c940cdf8..8ef3b20303 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PingGroupRequest.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs index 88e0ebad2b..16f9b40874 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PlayGroupRequest.cs @@ -48,7 +48,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousItemGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousItemGroupRequest.cs index ad3ea5e553..166ee08007 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousItemGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/PreviousItemGroupRequest.cs @@ -31,7 +31,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs index ba5e3e2327..d4af63b6d4 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/QueueGroupRequest.cs @@ -40,7 +40,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs index b2efcc97df..74f01cbeaf 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/ReadyGroupRequest.cs @@ -55,7 +55,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs index 24009d93ca..47c06c2227 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/RemoveFromPlaylistGroupRequest.cs @@ -32,7 +32,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs index 41e28467c0..ecaa689ae3 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SeekGroupRequest.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs index 3edf9b8a42..c3451703ed 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetPlaylistItemGroupRequest.cs @@ -31,7 +31,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs index 6a5ec1d117..51011672ea 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetRepeatModeGroupRequest.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs index fe007c8d89..d7b2504b4b 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/SetShuffleModeGroupRequest.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs index c42e229d1f..ad739213c5 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/StopGroupRequest.cs @@ -15,7 +15,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } diff --git a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs index b4c1744e95..aaf3d65a84 100644 --- a/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs +++ b/MediaBrowser.Controller/SyncPlay/PlaybackRequests/UnpauseGroupRequest.cs @@ -15,7 +15,7 @@ namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests /// public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken) { - state.HandleRequest(context, state.Type, this, session, cancellationToken); + state.HandleRequest(this, context, state.Type, session, cancellationToken); } } } -- cgit v1.2.3