QueueGroupRequest.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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 QueueGroupRequest.
  11. /// </summary>
  12. public class QueueGroupRequest : AbstractPlaybackRequest
  13. {
  14. /// <summary>
  15. /// Initializes a new instance of the <see cref="QueueGroupRequest"/> class.
  16. /// </summary>
  17. /// <param name="items">The items to add to the queue.</param>
  18. /// <param name="mode">The enqueue mode.</param>
  19. public QueueGroupRequest(IReadOnlyList<Guid> items, GroupQueueMode mode)
  20. {
  21. ItemIds = items ?? Array.Empty<Guid>();
  22. Mode = mode;
  23. }
  24. /// <summary>
  25. /// Gets the items to enqueue.
  26. /// </summary>
  27. /// <value>The items to enqueue.</value>
  28. public IReadOnlyList<Guid> ItemIds { get; }
  29. /// <summary>
  30. /// Gets the mode in which to add the new items.
  31. /// </summary>
  32. /// <value>The enqueue mode.</value>
  33. public GroupQueueMode Mode { get; }
  34. /// <inheritdoc />
  35. public override PlaybackRequestType Action { get; } = PlaybackRequestType.Queue;
  36. /// <inheritdoc />
  37. public override void Apply(IGroupStateContext context, IGroupState state, SessionInfo session, CancellationToken cancellationToken)
  38. {
  39. state.HandleRequest(this, context, state.Type, session, cancellationToken);
  40. }
  41. }
  42. }