Handle ignore-wait request in waiting state in SyncPlay
This commit is contained in:
parent
83333e1fe8
commit
fa69f6fd51
|
@ -372,12 +372,10 @@ namespace Emby.Server.Implementations.SyncPlay
|
|||
/// <inheritdoc />
|
||||
public void SetIgnoreGroupWait(SessionInfo session, bool ignoreGroupWait)
|
||||
{
|
||||
if (!Participants.ContainsKey(session.Id))
|
||||
if (Participants.TryGetValue(session.Id, out GroupMember value))
|
||||
{
|
||||
return;
|
||||
value.IgnoreGroupWait = ignoreGroupWait;
|
||||
}
|
||||
|
||||
Participants[session.Id].IgnoreGroupWait = ignoreGroupWait;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,181 +34,181 @@ namespace MediaBrowser.Controller.SyncPlay
|
|||
void SessionLeaving(IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Generic handle. Context's state can change.
|
||||
/// Generic handler. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The generic action.</param>
|
||||
/// <param name="request">The generic request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, IGroupPlaybackRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a play action requested by a session. Context's state can change.
|
||||
/// Handles a play request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The play action.</param>
|
||||
/// <param name="request">The play request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, PlayGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a playlist-item change requested by a session. Context's state can change.
|
||||
/// Handles a set-playlist-item request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The playlist-item change action.</param>
|
||||
/// <param name="request">The set-playlist-item request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetPlaylistItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a remove-items change requested by a session. Context's state can change.
|
||||
/// Handles a remove-items request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The remove-items change action.</param>
|
||||
/// <param name="request">The remove-items request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, RemoveFromPlaylistGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a move-item change requested by a session. Context's state should not change.
|
||||
/// Handles a move-playlist-item request from a session. Context's state should not change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The move-item change action.</param>
|
||||
/// <param name="request">The move-playlist-item request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, MovePlaylistItemGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a queue change requested by a session. Context's state should not change.
|
||||
/// Handles a queue request from a session. Context's state should not change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The queue action.</param>
|
||||
/// <param name="request">The queue request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, QueueGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles an unpause action requested by a session. Context's state can change.
|
||||
/// Handles an unpause request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The unpause action.</param>
|
||||
/// <param name="request">The unpause request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, UnpauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a pause action requested by a session. Context's state can change.
|
||||
/// Handles a pause request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The pause action.</param>
|
||||
/// <param name="request">The pause request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, PauseGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a stop action requested by a session. Context's state can change.
|
||||
/// Handles a stop request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The stop action.</param>
|
||||
/// <param name="request">The stop request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, StopGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a seek action requested by a session. Context's state can change.
|
||||
/// Handles a seek request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The seek action.</param>
|
||||
/// <param name="request">The seek request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, SeekGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a buffering action requested by a session. Context's state can change.
|
||||
/// Handles a buffer request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The buffering action.</param>
|
||||
/// <param name="request">The buffer request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, BufferGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a buffering-done action requested by a session. Context's state can change.
|
||||
/// Handles a ready request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The buffering-done action.</param>
|
||||
/// <param name="request">The ready request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, ReadyGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a next-track action requested by a session. Context's state can change.
|
||||
/// Handles a next-track request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The next-track action.</param>
|
||||
/// <param name="request">The next-track request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, NextTrackGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a previous-track action requested by a session. Context's state can change.
|
||||
/// Handles a previous-track request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The previous-track action.</param>
|
||||
/// <param name="request">The previous-track request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, PreviousTrackGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a repeat-mode change requested by a session. Context's state should not change.
|
||||
/// Handles a set-repeat-mode request from a session. Context's state should not change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The repeat-mode action.</param>
|
||||
/// <param name="request">The repeat-mode request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetRepeatModeGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Handles a shuffle-mode change requested by a session. Context's state should not change.
|
||||
/// Handles a set-shuffle-mode request from a session. Context's state should not change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The shuffle-mode action.</param>
|
||||
/// <param name="request">The shuffle-mode request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, SetShuffleModeGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Updates ping of a session. Context's state should not change.
|
||||
/// Updates the ping of a session. Context's state should not change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The buffering-done action.</param>
|
||||
/// <param name="request">The ping request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, PingGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Updates whether the session should be considered during group wait. Context's state should not change.
|
||||
/// Handles a ignore-wait request from a session. Context's state can change.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the state.</param>
|
||||
/// <param name="prevState">The previous state.</param>
|
||||
/// <param name="request">The ignore-wait action.</param>
|
||||
/// <param name="request">The ignore-wait request.</param>
|
||||
/// <param name="session">The session.</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
void HandleRequest(IGroupStateContext context, GroupStateType prevState, IgnoreWaitGroupRequest request, SessionInfo session, CancellationToken cancellationToken);
|
||||
|
|
Loading…
Reference in New Issue
Block a user