PlayGroupRequest.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #nullable disable
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Threading;
  5. using MediaBrowser.Controller.Session;
  6. using MediaBrowser.Model.SyncPlay;
  7. namespace MediaBrowser.Controller.SyncPlay.PlaybackRequests
  8. {
  9. /// <summary>
  10. /// Class PlayGroupRequest.
  11. /// </summary>
  12. public class PlayGroupRequest : AbstractPlaybackRequest
  13. {
  14. /// <summary>
  15. /// Initializes a new instance of the <see cref="PlayGroupRequest"/> class.
  16. /// </summary>
  17. /// <param name="playingQueue">The playing queue.</param>
  18. /// <param name="playingItemPosition">The playing item position.</param>
  19. /// <param name="startPositionTicks">The start position ticks.</param>
  20. public PlayGroupRequest(IReadOnlyList<Guid> playingQueue, int playingItemPosition, long startPositionTicks)
  21. {
  22. PlayingQueue = playingQueue ?? Array.Empty<Guid>();
  23. PlayingItemPosition = playingItemPosition;
  24. StartPositionTicks = startPositionTicks;
  25. }
  26. /// <summary>
  27. /// Gets the playing queue.
  28. /// </summary>
  29. /// <value>The playing queue.</value>
  30. public IReadOnlyList<Guid> PlayingQueue { get; }
  31. /// <summary>
  32. /// Gets the position of the playing item in the queue.
  33. /// </summary>
  34. /// <value>The playing item position.</value>
  35. public int PlayingItemPosition { get; }
  36. /// <summary>
  37. /// Gets the start position ticks.
  38. /// </summary>
  39. /// <value>The start position ticks.</value>
  40. public long StartPositionTicks { get; }
  41. /// <inheritdoc />
  42. public override PlaybackRequestType Action { get; } = PlaybackRequestType.Play;
  43. /// <inheritdoc />
  44. public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken)
  45. {
  46. state.HandleRequest(this, context, state.Type, session, cancellationToken);
  47. }
  48. }
  49. }