aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/SyncPlay/GroupStates
diff options
context:
space:
mode:
authorIonut Andrei Oanca <oancaionutandrei@gmail.com>2020-11-14 18:09:25 +0100
committerIonut Andrei Oanca <oancaionutandrei@gmail.com>2020-11-14 18:09:25 +0100
commitfa69f6fd511b88f2c10f37c45e1924b8bfe2e7ec (patch)
tree05f916619a9300aaf45bc9f163bbe9d0a4f4d325 /MediaBrowser.Controller/SyncPlay/GroupStates
parent83333e1fe8ed35f73fafdc200a4bf39be7d80f1b (diff)
Handle ignore-wait request in waiting state in SyncPlay
Diffstat (limited to 'MediaBrowser.Controller/SyncPlay/GroupStates')
-rw-r--r--MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs8
-rw-r--r--MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs8
-rw-r--r--MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs8
-rw-r--r--MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs34
4 files changed, 30 insertions, 28 deletions
diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs
index 1a507e044c..d9350cc9b9 100644
--- a/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs
+++ b/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs
@@ -24,13 +24,7 @@ namespace MediaBrowser.Controller.SyncPlay
}
/// <inheritdoc />
- public override GroupStateType Type
- {
- get
- {
- return GroupStateType.Idle;
- }
- }
+ public override GroupStateType Type { get; } = GroupStateType.Idle;
/// <inheritdoc />
public override void SessionJoined(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 11f526d31d..5ae4786057 100644
--- a/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs
+++ b/MediaBrowser.Controller/SyncPlay/GroupStates/PausedGroupState.cs
@@ -25,13 +25,7 @@ namespace MediaBrowser.Controller.SyncPlay
}
/// <inheritdoc />
- public override GroupStateType Type
- {
- get
- {
- return GroupStateType.Paused;
- }
- }
+ public override GroupStateType Type { get; } = GroupStateType.Paused;
/// <inheritdoc />
public override void SessionJoined(IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken)
diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs
index 2aa7598118..394c64e511 100644
--- a/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs
+++ b/MediaBrowser.Controller/SyncPlay/GroupStates/PlayingGroupState.cs
@@ -25,13 +25,7 @@ namespace MediaBrowser.Controller.SyncPlay
}
/// <inheritdoc />
- public override GroupStateType Type
- {
- get
- {
- return GroupStateType.Playing;
- }
- }
+ public override GroupStateType Type { get; } = GroupStateType.Playing;
/// <summary>
/// Gets or sets a value indicating whether requests for buffering should be ignored.
diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs
index 7f454570a9..c78077b357 100644
--- a/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs
+++ b/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs
@@ -25,13 +25,7 @@ namespace MediaBrowser.Controller.SyncPlay
}
/// <inheritdoc />
- public override GroupStateType Type
- {
- get
- {
- return GroupStateType.Waiting;
- }
- }
+ public override GroupStateType Type { get; } = GroupStateType.Waiting;
/// <summary>
/// Gets or sets a value indicating whether playback should resume when group is ready.
@@ -651,5 +645,31 @@ namespace MediaBrowser.Controller.SyncPlay
Logger.LogDebug("HandleRequest: {0} in group {1}, no previous track available.", request.Type, context.GroupId.ToString());
}
}
+
+ /// <inheritdoc />
+ public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, IgnoreWaitGroupRequest request, SessionInfo session, CancellationToken cancellationToken)
+ {
+ context.SetIgnoreGroupWait(session, request.IgnoreWait);
+
+ if (!context.IsBuffering())
+ {
+ Logger.LogDebug("HandleRequest: {0} in group {1}, returning to previous state.", request.Type, context.GroupId.ToString());
+
+ if (ResumePlaying)
+ {
+ // Client, that was buffering, stopped following playback.
+ var playingState = new PlayingGroupState(Logger);
+ context.SetState(playingState);
+ var unpauseRequest = new UnpauseGroupRequest();
+ playingState.HandleRequest(context, Type, unpauseRequest, session, cancellationToken);
+ }
+ else
+ {
+ // Group is ready, returning to previous state.
+ var pausedState = new PausedGroupState(Logger);
+ context.SetState(pausedState);
+ }
+ }
+ }
}
}