< Summary - Jellyfin

Information
Class: MediaBrowser.Controller.SyncPlay.GroupStates.IdleGroupState
Assembly: MediaBrowser.Controller
File(s): /srv/git/jellyfin/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 37
Coverable lines: 37
Total lines: 128
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
SessionJoined(...)100%210%
SessionLeaving(...)100%210%
HandleRequest(...)100%210%
HandleRequest(...)100%210%
HandleRequest(...)100%210%
HandleRequest(...)100%210%
HandleRequest(...)100%210%
HandleRequest(...)100%210%
HandleRequest(...)100%210%
HandleRequest(...)100%210%
HandleRequest(...)100%210%
SendStopCommand(...)0%620%

File(s)

/srv/git/jellyfin/MediaBrowser.Controller/SyncPlay/GroupStates/IdleGroupState.cs

#LineLine coverage
 1#nullable disable
 2
 3using System.Threading;
 4using MediaBrowser.Controller.Session;
 5using MediaBrowser.Controller.SyncPlay.PlaybackRequests;
 6using MediaBrowser.Model.SyncPlay;
 7using Microsoft.Extensions.Logging;
 8
 9namespace MediaBrowser.Controller.SyncPlay.GroupStates
 10{
 11    /// <summary>
 12    /// Class IdleGroupState.
 13    /// </summary>
 14    /// <remarks>
 15    /// Class is not thread-safe, external locking is required when accessing methods.
 16    /// </remarks>
 17    public class IdleGroupState : AbstractGroupState
 18    {
 19        /// <summary>
 20        /// The logger.
 21        /// </summary>
 22        private readonly ILogger<IdleGroupState> _logger;
 23
 24        /// <summary>
 25        /// Initializes a new instance of the <see cref="IdleGroupState"/> class.
 26        /// </summary>
 27        /// <param name="loggerFactory">Instance of the <see cref="ILoggerFactory"/> interface.</param>
 28        public IdleGroupState(ILoggerFactory loggerFactory)
 029            : base(loggerFactory)
 30        {
 031            _logger = LoggerFactory.CreateLogger<IdleGroupState>();
 032        }
 33
 34        /// <inheritdoc />
 35        public override GroupStateType Type { get; } = GroupStateType.Idle;
 36
 37        /// <inheritdoc />
 38        public override void SessionJoined(IGroupStateContext context, GroupStateType prevState, SessionInfo session, Ca
 39        {
 040            SendStopCommand(context, Type, session, cancellationToken);
 041        }
 42
 43        /// <inheritdoc />
 44        public override void SessionLeaving(IGroupStateContext context, GroupStateType prevState, SessionInfo session, C
 45        {
 46            // Do nothing.
 047        }
 48
 49        /// <inheritdoc />
 50        public override void HandleRequest(PlayGroupRequest request, IGroupStateContext context, GroupStateType prevStat
 51        {
 52            // Change state.
 053            var waitingState = new WaitingGroupState(LoggerFactory);
 054            context.SetState(waitingState);
 055            waitingState.HandleRequest(request, context, Type, session, cancellationToken);
 056        }
 57
 58        /// <inheritdoc />
 59        public override void HandleRequest(UnpauseGroupRequest request, IGroupStateContext context, GroupStateType prevS
 60        {
 61            // Change state.
 062            var waitingState = new WaitingGroupState(LoggerFactory);
 063            context.SetState(waitingState);
 064            waitingState.HandleRequest(request, context, Type, session, cancellationToken);
 065        }
 66
 67        /// <inheritdoc />
 68        public override void HandleRequest(PauseGroupRequest request, IGroupStateContext context, GroupStateType prevSta
 69        {
 070            SendStopCommand(context, prevState, session, cancellationToken);
 071        }
 72
 73        /// <inheritdoc />
 74        public override void HandleRequest(StopGroupRequest request, IGroupStateContext context, GroupStateType prevStat
 75        {
 076            SendStopCommand(context, prevState, session, cancellationToken);
 077        }
 78
 79        /// <inheritdoc />
 80        public override void HandleRequest(SeekGroupRequest request, IGroupStateContext context, GroupStateType prevStat
 81        {
 082            SendStopCommand(context, prevState, session, cancellationToken);
 083        }
 84
 85        /// <inheritdoc />
 86        public override void HandleRequest(BufferGroupRequest request, IGroupStateContext context, GroupStateType prevSt
 87        {
 088            SendStopCommand(context, prevState, session, cancellationToken);
 089        }
 90
 91        /// <inheritdoc />
 92        public override void HandleRequest(ReadyGroupRequest request, IGroupStateContext context, GroupStateType prevSta
 93        {
 094            SendStopCommand(context, prevState, session, cancellationToken);
 095        }
 96
 97        /// <inheritdoc />
 98        public override void HandleRequest(NextItemGroupRequest request, IGroupStateContext context, GroupStateType prev
 99        {
 100            // Change state.
 0101            var waitingState = new WaitingGroupState(LoggerFactory);
 0102            context.SetState(waitingState);
 0103            waitingState.HandleRequest(request, context, Type, session, cancellationToken);
 0104        }
 105
 106        /// <inheritdoc />
 107        public override void HandleRequest(PreviousItemGroupRequest request, IGroupStateContext context, GroupStateType 
 108        {
 109            // Change state.
 0110            var waitingState = new WaitingGroupState(LoggerFactory);
 0111            context.SetState(waitingState);
 0112            waitingState.HandleRequest(request, context, Type, session, cancellationToken);
 0113        }
 114
 115        private void SendStopCommand(IGroupStateContext context, GroupStateType prevState, SessionInfo session, Cancella
 116        {
 0117            var command = context.NewSyncPlayCommand(SendCommandType.Stop);
 0118            if (!prevState.Equals(Type))
 119            {
 0120                context.SendCommand(session, SyncPlayBroadcastType.AllGroup, command, cancellationToken);
 121            }
 122            else
 123            {
 0124                context.SendCommand(session, SyncPlayBroadcastType.CurrentSession, command, cancellationToken);
 125            }
 0126        }
 127    }
 128}

Methods/Properties

.ctor(Microsoft.Extensions.Logging.ILoggerFactory)
SessionJoined(MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
SessionLeaving(MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
HandleRequest(MediaBrowser.Controller.SyncPlay.PlaybackRequests.PlayGroupRequest,MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
HandleRequest(MediaBrowser.Controller.SyncPlay.PlaybackRequests.UnpauseGroupRequest,MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
HandleRequest(MediaBrowser.Controller.SyncPlay.PlaybackRequests.PauseGroupRequest,MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
HandleRequest(MediaBrowser.Controller.SyncPlay.PlaybackRequests.StopGroupRequest,MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
HandleRequest(MediaBrowser.Controller.SyncPlay.PlaybackRequests.SeekGroupRequest,MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
HandleRequest(MediaBrowser.Controller.SyncPlay.PlaybackRequests.BufferGroupRequest,MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
HandleRequest(MediaBrowser.Controller.SyncPlay.PlaybackRequests.ReadyGroupRequest,MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
HandleRequest(MediaBrowser.Controller.SyncPlay.PlaybackRequests.NextItemGroupRequest,MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
HandleRequest(MediaBrowser.Controller.SyncPlay.PlaybackRequests.PreviousItemGroupRequest,MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)
SendStopCommand(MediaBrowser.Controller.SyncPlay.IGroupStateContext,MediaBrowser.Model.SyncPlay.GroupStateType,MediaBrowser.Controller.Session.SessionInfo,System.Threading.CancellationToken)