#nullable disable using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.SyncPlay.PlaybackRequests; using MediaBrowser.Model.SyncPlay; namespace MediaBrowser.Controller.SyncPlay { /// /// Interface IGroupState. /// public interface IGroupState { /// /// Gets the group state type. /// /// The group state type. GroupStateType Type { get; } /// /// Handles a session that joined the group. /// /// The context of the state. /// The previous state. /// The session. /// The cancellation token. void SessionJoined(IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Handles a session that is leaving the group. /// /// The context of the state. /// The previous state. /// The session. /// The cancellation token. void SessionLeaving(IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); /// /// Generic handler. Context's state can change. /// /// The generic request. /// The context of the state. /// The previous state. /// The session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. 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 session. /// The cancellation token. void HandleRequest(IgnoreWaitGroupRequest request, IGroupStateContext context, GroupStateType prevState, SessionInfo session, CancellationToken cancellationToken); } }