diff options
Diffstat (limited to 'MediaBrowser.Controller')
7 files changed, 138 insertions, 117 deletions
diff --git a/MediaBrowser.Controller/SyncPlay/GroupMember.cs b/MediaBrowser.Controller/SyncPlay/GroupMember.cs index 9a9d30277..5fb982e85 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupMember.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupMember.cs @@ -8,10 +8,19 @@ namespace MediaBrowser.Controller.SyncPlay public class GroupMember { /// <summary> - /// Gets or sets the session. + /// Initializes a new instance of the <see cref="GroupMember"/> class. + /// </summary> + /// <param name="session">The session.</param> + public GroupMember(SessionInfo session) + { + Session = session; + } + + /// <summary> + /// Gets the session. /// </summary> /// <value>The session.</value> - public SessionInfo Session { get; set; } + public SessionInfo Session { get; } /// <summary> /// Gets or sets the ping, in milliseconds. diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs index e5da0ef40..057488d6b 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/AbstractGroupState.cs @@ -15,21 +15,27 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public abstract class AbstractGroupState : IGroupState { /// <summary> + /// The logger. + /// </summary> + private readonly ILogger<AbstractGroupState> _logger; + + /// <summary> /// Initializes a new instance of the <see cref="AbstractGroupState"/> class. /// </summary> - /// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param> - protected AbstractGroupState(ILogger logger) + /// <param name="loggerFactory">Instance of the <see cref="ILoggerFactory"/> interface.</param> + protected AbstractGroupState(ILoggerFactory loggerFactory) { - Logger = logger; + LoggerFactory = loggerFactory; + _logger = loggerFactory.CreateLogger<AbstractGroupState>(); } /// <inheritdoc /> public abstract GroupStateType Type { get; } /// <summary> - /// Gets the logger. + /// Gets the logger factory. /// </summary> - protected ILogger Logger { get; } + protected ILoggerFactory LoggerFactory { get; } /// <inheritdoc /> public abstract void SessionJoined(IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); @@ -52,7 +58,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates /// <inheritdoc /> public virtual void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetPlaylistItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -68,9 +74,9 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates if (playingItemRemoved && !context.PlayQueue.IsItemPlaying()) { - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, play queue is empty.", request.Type, context.GroupId.ToString()); + _logger.LogDebug("Play queue in group {GroupId} is now empty.", context.GroupId.ToString()); - IGroupState idleState = new IdleGroupState(Logger); + IGroupState idleState = new IdleGroupState(LoggerFactory); context.SetState(idleState); var stopRequest = new StopGroupRequest(); idleState.HandleRequest(context, Type, stopRequest, session, cancellationToken); @@ -84,7 +90,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates if (!result) { - Logger.LogError("HandleRequest: {RequestType} in group {GroupId}, unable to move item in play queue.", request.Type, context.GroupId.ToString()); + _logger.LogError("Unable to move item in group {GroupId}.", context.GroupId.ToString()); return; } @@ -100,7 +106,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates if (!result) { - Logger.LogError("HandleRequest: {RequestType} in group {GroupId}, unable to add items to play queue.", request.Type, context.GroupId.ToString()); + _logger.LogError("Unable to add items to play queue in group {GroupId}.", context.GroupId.ToString()); return; } @@ -210,7 +216,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates private void UnhandledRequest(IGroupPlaybackRequest request) { - Logger.LogWarning("HandleRequest: unhandled {RequestType} request in {StateType} state.", request.Type, Type); + _logger.LogWarning("Unhandled request of type {RequestType} in {StateType} state.", request.Type, Type); } } } diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs index 660afb607..7730a298c 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs @@ -15,13 +15,18 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public class IdleGroupState : AbstractGroupState { /// <summary> + /// The logger. + /// </summary> + private readonly ILogger<IdleGroupState> _logger; + + /// <summary> /// Initializes a new instance of the <see cref="IdleGroupState"/> class. /// </summary> - /// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param> - public IdleGroupState(ILogger logger) - : base(logger) + /// <param name="loggerFactory">Instance of the <see cref="ILoggerFactory"/> interface.</param> + public IdleGroupState(ILoggerFactory loggerFactory) + : base(loggerFactory) { - // Do nothing. + _logger = LoggerFactory.CreateLogger<IdleGroupState>(); } /// <inheritdoc /> @@ -43,7 +48,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PlayGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -52,7 +57,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, UnpauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -91,7 +96,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, NextTrackGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -100,7 +105,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PreviousTrackGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs index 29942898e..90411f61b 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs @@ -16,13 +16,18 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public class PausedGroupState : AbstractGroupState { /// <summary> + /// The logger. + /// </summary> + private readonly ILogger<PausedGroupState> _logger; + + /// <summary> /// Initializes a new instance of the <see cref="PausedGroupState"/> class. /// </summary> - /// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param> - public PausedGroupState(ILogger logger) - : base(logger) + /// <param name="loggerFactory">Instance of the <see cref="ILoggerFactory"/> interface.</param> + public PausedGroupState(ILoggerFactory loggerFactory) + : base(loggerFactory) { - // Do nothing. + _logger = LoggerFactory.CreateLogger<PausedGroupState>(); } /// <inheritdoc /> @@ -32,7 +37,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void SessionJoined(IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Wait for session to be ready. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.SessionJoined(context, Type, session, cancellationToken); } @@ -47,7 +52,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PlayGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -56,7 +61,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, UnpauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var playingState = new PlayingGroupState(Logger); + var playingState = new PlayingGroupState(LoggerFactory); context.SetState(playingState); playingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -96,7 +101,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, StopGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var idleState = new IdleGroupState(Logger); + var idleState = new IdleGroupState(LoggerFactory); context.SetState(idleState); idleState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -105,7 +110,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, SeekGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -114,7 +119,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, BufferGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -143,7 +148,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, NextTrackGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -152,7 +157,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PreviousTrackGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs index c5d73dedb..aab87d9c3 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs @@ -16,13 +16,18 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public class PlayingGroupState : AbstractGroupState { /// <summary> + /// The logger. + /// </summary> + private readonly ILogger<PlayingGroupState> _logger; + + /// <summary> /// Initializes a new instance of the <see cref="PlayingGroupState"/> class. /// </summary> - /// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param> - public PlayingGroupState(ILogger logger) - : base(logger) + /// <param name="loggerFactory">Instance of the <see cref="ILoggerFactory"/> interface.</param> + public PlayingGroupState(ILoggerFactory loggerFactory) + : base(loggerFactory) { - // Do nothing. + _logger = LoggerFactory.CreateLogger<PlayingGroupState>(); } /// <inheritdoc /> @@ -37,7 +42,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void SessionJoined(IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken) { // Wait for session to be ready. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.SessionJoined(context, Type, session, cancellationToken); } @@ -52,7 +57,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PlayGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -89,7 +94,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var pausedState = new PausedGroupState(Logger); + var pausedState = new PausedGroupState(LoggerFactory); context.SetState(pausedState); pausedState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -98,7 +103,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, StopGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var idleState = new IdleGroupState(Logger); + var idleState = new IdleGroupState(LoggerFactory); context.SetState(idleState); idleState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -107,7 +112,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, SeekGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -121,7 +126,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -146,7 +151,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, NextTrackGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -155,7 +160,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, PreviousTrackGroupRequest request, SessionInfo session, CancellationToken cancellationToken) { // Change state. - var waitingState = new WaitingGroupState(Logger); + var waitingState = new WaitingGroupState(LoggerFactory); context.SetState(waitingState); waitingState.HandleRequest(context, Type, request, session, cancellationToken); } diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs index e33e711fb..fefb8067f 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs @@ -16,13 +16,18 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates public class WaitingGroupState : AbstractGroupState { /// <summary> + /// The logger. + /// </summary> + private readonly ILogger<WaitingGroupState> _logger; + + /// <summary> /// Initializes a new instance of the <see cref="WaitingGroupState"/> class. /// </summary> - /// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param> - public WaitingGroupState(ILogger logger) - : base(logger) + /// <param name="loggerFactory">Instance of the <see cref="ILoggerFactory"/> interface.</param> + public WaitingGroupState(ILoggerFactory loggerFactory) + : base(loggerFactory) { - // Do nothing. + _logger = LoggerFactory.CreateLogger<WaitingGroupState>(); } /// <inheritdoc /> @@ -97,21 +102,21 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates { if (ResumePlaying) { + _logger.LogDebug("Session {SessionId} left group {GroupId}, notifying others to resume.", session.Id, context.GroupId.ToString()); + // Client, that was buffering, left the group. - var playingState = new PlayingGroupState(Logger); + var playingState = new PlayingGroupState(LoggerFactory); context.SetState(playingState); var unpauseRequest = new UnpauseGroupRequest(); playingState.HandleRequest(context, Type, unpauseRequest, session, cancellationToken); - - Logger.LogDebug("SessionLeaving: {SessionId} left group {GroupId}, notifying others to resume.", session.Id, context.GroupId.ToString()); } else { + _logger.LogDebug("Session {SessionId} left group {GroupId}, returning to previous state.", session.Id, context.GroupId.ToString()); + // Group is ready, returning to previous state. - var pausedState = new PausedGroupState(Logger); + var pausedState = new PausedGroupState(LoggerFactory); context.SetState(pausedState); - - Logger.LogDebug("SessionLeaving: {SessionId} left group {GroupId}, returning to previous state.", session.Id, context.GroupId.ToString()); } } } @@ -131,13 +136,13 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates var setQueueStatus = context.SetPlayQueue(request.PlayingQueue, request.PlayingItemPosition, request.StartPositionTicks); if (!setQueueStatus) { - Logger.LogError("HandleRequest: {RequestType} in group {GroupId}, unable to set playing queue.", request.Type, context.GroupId.ToString()); + _logger.LogError("Unable to set playing queue in group {GroupId}.", context.GroupId.ToString()); // Ignore request and return to previous state. IGroupState newState = prevState switch { - GroupStateType.Playing => new PlayingGroupState(Logger), - GroupStateType.Paused => new PausedGroupState(Logger), - _ => new IdleGroupState(Logger) + GroupStateType.Playing => new PlayingGroupState(LoggerFactory), + GroupStateType.Paused => new PausedGroupState(LoggerFactory), + _ => new IdleGroupState(LoggerFactory) }; context.SetState(newState); @@ -151,7 +156,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Reset status of sessions and await for all Ready events. context.SetAllBuffering(true); - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, {SessionId} set a new play queue.", request.Type, context.GroupId.ToString(), session.Id); + _logger.LogDebug("Session {SessionId} set a new play queue in group {GroupId}.", session.Id, context.GroupId.ToString()); } /// <inheritdoc /> @@ -181,14 +186,14 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Return to old state. IGroupState newState = prevState switch { - GroupStateType.Playing => new PlayingGroupState(Logger), - GroupStateType.Paused => new PausedGroupState(Logger), - _ => new IdleGroupState(Logger) + GroupStateType.Playing => new PlayingGroupState(LoggerFactory), + GroupStateType.Paused => new PausedGroupState(LoggerFactory), + _ => new IdleGroupState(LoggerFactory) }; context.SetState(newState); - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, unable to change current playing item.", request.Type, context.GroupId.ToString()); + _logger.LogDebug("Unable to change current playing item in group {GroupId}.", context.GroupId.ToString()); } } @@ -214,19 +219,19 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Reset status of sessions and await for all Ready events. context.SetAllBuffering(true); - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, waiting for all ready events.", request.Type, context.GroupId.ToString()); + _logger.LogDebug("Group {GroupId} is waiting for all ready events.", context.GroupId.ToString()); } else { if (ResumePlaying) { - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, ignoring sessions that are not ready and forcing the playback to start.", request.Type, context.GroupId.ToString()); + _logger.LogDebug("Forcing the playback to start in group {GroupId}. Group-wait is disabled until next state change.", context.GroupId.ToString()); // An Unpause request is forcing the playback to start, ignoring sessions that are not ready. context.SetAllBuffering(false); // Change state. - var playingState = new PlayingGroupState(Logger) + var playingState = new PlayingGroupState(LoggerFactory) { IgnoreBuffering = true }; @@ -272,7 +277,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates } // Change state. - var idleState = new IdleGroupState(Logger); + var idleState = new IdleGroupState(LoggerFactory); context.SetState(idleState); idleState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -326,7 +331,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Make sure the client is playing the correct item. if (!request.PlaylistItemId.Equals(context.PlayQueue.GetPlayingItemPlaylistId(), StringComparison.OrdinalIgnoreCase)) { - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, {SessionId} has wrong playlist item.", request.Type, context.GroupId.ToString(), session.Id); + _logger.LogDebug("Session {SessionId} reported wrong playlist item in group {GroupId}.", session.Id, context.GroupId.ToString()); var playQueueUpdate = context.GetPlayQueueUpdate(PlayQueueUpdateReason.SetCurrentItem); var updateSession = context.NewSyncPlayGroupUpdate(GroupUpdateType.PlayQueue, playQueueUpdate); @@ -400,7 +405,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Make sure the client is playing the correct item. if (!request.PlaylistItemId.Equals(context.PlayQueue.GetPlayingItemPlaylistId(), StringComparison.OrdinalIgnoreCase)) { - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, {SessionId} has wrong playlist item.", request.Type, context.GroupId.ToString(), session.Id); + _logger.LogDebug("Session {SessionId} reported wrong playlist item in group {GroupId}.", session.Id, context.GroupId.ToString()); var playQueueUpdate = context.GetPlayQueueUpdate(PlayQueueUpdateReason.SetCurrentItem); var update = context.NewSyncPlayGroupUpdate(GroupUpdateType.PlayQueue, playQueueUpdate); @@ -420,7 +425,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates var timeSyncThresholdTicks = TimeSpan.FromMilliseconds(context.TimeSyncOffset).Ticks; if (Math.Abs(elapsedTime.Ticks) > timeSyncThresholdTicks) { - Logger.LogWarning("HandleRequest: {RequestType} in group {GroupId}, {SessionId} is not time syncing properly. Ignoring elapsed time.", request.Type, context.GroupId.ToString(), session.Id); + _logger.LogWarning("Session {SessionId} is not time syncing properly. Ignoring elapsed time.", session.Id); elapsedTime = TimeSpan.Zero; } @@ -436,7 +441,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates var delayTicks = context.PositionTicks - clientPosition.Ticks; var maxPlaybackOffsetTicks = TimeSpan.FromMilliseconds(context.MaxPlaybackOffset).Ticks; - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, {SessionId} at {PositionTicks} (delay of {Delay} seconds).", request.Type, context.GroupId.ToString(), session.Id, clientPosition, TimeSpan.FromTicks(delayTicks).TotalSeconds); + _logger.LogDebug("Session {SessionId} is at {PositionTicks} (delay of {Delay} seconds) in group {GroupId}.", session.Id, clientPosition, TimeSpan.FromTicks(delayTicks).TotalSeconds, context.GroupId.ToString()); if (ResumePlaying) { @@ -454,7 +459,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Notify relevant state change event. SendGroupStateUpdate(context, request, session, cancellationToken); - Logger.LogWarning("HandleRequest: {RequestType} in group {GroupId}, {SessionId} got lost in time, correcting.", request.Type, context.GroupId.ToString(), session.Id); + _logger.LogWarning("Session {SessionId} got lost in time, correcting.", session.Id); return; } @@ -468,7 +473,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates command.When = currentTime.AddTicks(delayTicks); context.SendCommand(session, SyncPlayBroadcastType.CurrentSession, command, cancellationToken); - Logger.LogInformation("HandleRequest: {RequestType} in group {GroupId}, others still buffering, {SessionId} will pause when ready in {Delay} seconds.", request.Type, context.GroupId.ToString(), session.Id, TimeSpan.FromTicks(delayTicks).TotalSeconds); + _logger.LogInformation("Session {SessionId} will pause when ready in {Delay} seconds. Group {GroupId} is waiting for all ready events.", session.Id, TimeSpan.FromTicks(delayTicks).TotalSeconds, context.GroupId.ToString()); } else { @@ -487,7 +492,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates context.SendCommand(session, filter, command, cancellationToken); - Logger.LogInformation("HandleRequest: {RequestType} in group {GroupId}, {SessionId} is recovering, notifying others to resume in {Delay} seconds.", request.Type, context.GroupId.ToString(), session.Id, TimeSpan.FromTicks(delayTicks).TotalSeconds); + _logger.LogInformation("Session {SessionId} is recovering, group {GroupId} will resume in {Delay} seconds.", session.Id, context.GroupId.ToString(), TimeSpan.FromTicks(delayTicks).TotalSeconds); } else { @@ -500,11 +505,11 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates var command = context.NewSyncPlayCommand(SendCommandType.Unpause); context.SendCommand(session, SyncPlayBroadcastType.AllGroup, command, cancellationToken); - Logger.LogWarning("HandleRequest: {RequestType} in group {GroupId}, {SessionId} resumed playback but did not update others in time. {Delay} seconds to recover.", request.Type, context.GroupId.ToString(), session.Id, TimeSpan.FromTicks(delayTicks).TotalSeconds); + _logger.LogWarning("Session {SessionId} resumed playback, group {GroupId} has {Delay} seconds to recover.", session.Id, context.GroupId.ToString(), TimeSpan.FromTicks(delayTicks).TotalSeconds); } // Change state. - var playingState = new PlayingGroupState(Logger); + var playingState = new PlayingGroupState(LoggerFactory); context.SetState(playingState); playingState.HandleRequest(context, Type, request, session, cancellationToken); } @@ -523,7 +528,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Notify relevant state change event. SendGroupStateUpdate(context, request, session, cancellationToken); - Logger.LogWarning("HandleRequest: {RequestType} in group {GroupId}, {SessionId} is seeking to wrong position, correcting.", request.Type, context.GroupId.ToString(), session.Id); + _logger.LogWarning("Session {SessionId} is seeking to wrong position, correcting.", session.Id); return; } else @@ -534,8 +539,10 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates if (!context.IsBuffering()) { + _logger.LogDebug("Session {SessionId} is ready, group {GroupId} is ready.", session.Id, context.GroupId.ToString()); + // Group is ready, returning to previous state. - var pausedState = new PausedGroupState(Logger); + var pausedState = new PausedGroupState(LoggerFactory); context.SetState(pausedState); if (InitialState.Equals(GroupStateType.Playing)) @@ -548,8 +555,6 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates { pausedState.HandleRequest(context, Type, request, session, cancellationToken); } - - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, {SessionId} is ready, returning to previous state.", request.Type, context.GroupId.ToString(), session.Id); } } } @@ -569,7 +574,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Make sure the client knows the playing item, to avoid duplicate requests. if (!request.PlaylistItemId.Equals(context.PlayQueue.GetPlayingItemPlaylistId(), StringComparison.OrdinalIgnoreCase)) { - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, {SessionId} provided the wrong playlist identifier.", request.Type, context.GroupId.ToString(), session.Id); + _logger.LogDebug("Session {SessionId} provided the wrong playlist item for group {GroupId}.", session.Id, context.GroupId.ToString()); return; } @@ -589,14 +594,14 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Return to old state. IGroupState newState = prevState switch { - GroupStateType.Playing => new PlayingGroupState(Logger), - GroupStateType.Paused => new PausedGroupState(Logger), - _ => new IdleGroupState(Logger) + GroupStateType.Playing => new PlayingGroupState(LoggerFactory), + GroupStateType.Paused => new PausedGroupState(LoggerFactory), + _ => new IdleGroupState(LoggerFactory) }; context.SetState(newState); - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, no next track available.", request.Type, context.GroupId.ToString()); + _logger.LogDebug("No next track available in group {GroupId}.", context.GroupId.ToString()); } } @@ -615,7 +620,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Make sure the client knows the playing item, to avoid duplicate requests. if (!request.PlaylistItemId.Equals(context.PlayQueue.GetPlayingItemPlaylistId(), StringComparison.OrdinalIgnoreCase)) { - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, {SessionId} provided the wrong playlist identifier.", request.Type, context.GroupId.ToString(), session.Id); + _logger.LogDebug("Session {SessionId} provided the wrong playlist item for group {GroupId}.", session.Id, context.GroupId.ToString()); return; } @@ -635,14 +640,14 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates // Return to old state. IGroupState newState = prevState switch { - GroupStateType.Playing => new PlayingGroupState(Logger), - GroupStateType.Paused => new PausedGroupState(Logger), - _ => new IdleGroupState(Logger) + GroupStateType.Playing => new PlayingGroupState(LoggerFactory), + GroupStateType.Paused => new PausedGroupState(LoggerFactory), + _ => new IdleGroupState(LoggerFactory) }; context.SetState(newState); - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, no previous track available.", request.Type, context.GroupId.ToString()); + _logger.LogDebug("No previous track available in group {GroupId}.", context.GroupId.ToString()); } } @@ -653,12 +658,12 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates if (!context.IsBuffering()) { - Logger.LogDebug("HandleRequest: {RequestType} in group {GroupId}, returning to previous state.", request.Type, context.GroupId.ToString()); + _logger.LogDebug("Ignoring session {SessionId}, group {GroupId} is ready.", session.Id, context.GroupId.ToString()); if (ResumePlaying) { // Client, that was buffering, stopped following playback. - var playingState = new PlayingGroupState(Logger); + var playingState = new PlayingGroupState(LoggerFactory); context.SetState(playingState); var unpauseRequest = new UnpauseGroupRequest(); playingState.HandleRequest(context, Type, unpauseRequest, session, cancellationToken); @@ -666,7 +671,7 @@ namespace MediaBrowser.Controller.SyncPlay.GroupStates else { // Group is ready, returning to previous state. - var pausedState = new PausedGroupState(Logger); + var pausedState = new PausedGroupState(LoggerFactory); context.SetState(pausedState); } } diff --git a/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs b/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs index 73457f447..bfb9d1e4c 100644 --- a/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs +++ b/MediaBrowser.Controller/SyncPlay/Queue/PlayQueueManager.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue /// Random number generator used to shuffle lists. /// </summary> /// <value>The random number generator.</value> - private readonly Random randomNumberGenerator = new Random(); + private readonly Random _randomNumberGenerator = new Random(); /// <summary> /// Initializes a new instance of the <see cref="PlayQueueManager" /> class. @@ -102,7 +102,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue SortedPlaylist = CreateQueueItemsFromArray(items); if (ShuffleMode.Equals(GroupShuffleMode.Shuffle)) { - ShuffledPlaylist = SortedPlaylist.ToList(); + ShuffledPlaylist = new List<QueueItem>(SortedPlaylist); Shuffle(ShuffledPlaylist); } @@ -134,17 +134,17 @@ namespace MediaBrowser.Controller.SyncPlay.Queue { if (PlayingItemIndex == NoPlayingItemIndex) { - ShuffledPlaylist = SortedPlaylist.ToList(); + ShuffledPlaylist = new List<QueueItem>(SortedPlaylist); Shuffle(ShuffledPlaylist); } else if (ShuffleMode.Equals(GroupShuffleMode.Sorted)) { // First time shuffle. var playingItem = SortedPlaylist[PlayingItemIndex]; - ShuffledPlaylist = SortedPlaylist.ToList(); + ShuffledPlaylist = new List<QueueItem>(SortedPlaylist); ShuffledPlaylist.RemoveAt(PlayingItemIndex); Shuffle(ShuffledPlaylist); - ShuffledPlaylist = ShuffledPlaylist.Prepend(playingItem).ToList(); + ShuffledPlaylist.Insert(0, playingItem); PlayingItemIndex = 0; } else @@ -153,7 +153,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue var playingItem = ShuffledPlaylist[PlayingItemIndex]; ShuffledPlaylist.RemoveAt(PlayingItemIndex); Shuffle(ShuffledPlaylist); - ShuffledPlaylist = ShuffledPlaylist.Prepend(playingItem).ToList(); + ShuffledPlaylist.Insert(0, playingItem); PlayingItemIndex = 0; } @@ -236,14 +236,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue public string GetPlayingItemPlaylistId() { var playingItem = GetPlayingItem(); - if (playingItem != null) - { - return playingItem.PlaylistItemId; - } - else - { - return null; - } + return playingItem?.PlaylistItemId; } /// <summary> @@ -253,14 +246,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue public Guid GetPlayingItemId() { var playingItem = GetPlayingItem(); - if (playingItem != null) - { - return playingItem.ItemId; - } - else - { - return Guid.Empty; - } + return playingItem?.ItemId ?? Guid.Empty; } /// <summary> @@ -536,7 +522,7 @@ namespace MediaBrowser.Controller.SyncPlay.Queue while (n > 1) { n--; - int k = randomNumberGenerator.Next(n + 1); + int k = _randomNumberGenerator.Next(n + 1); T value = list[k]; list[k] = list[n]; list[n] = value; |
