using System; using System.Threading; using MediaBrowser.Controller.Session; using MediaBrowser.Model.SyncPlay; namespace MediaBrowser.Controller.SyncPlay { /// /// Interface ISyncPlayController. /// public interface ISyncPlayController { /// /// Gets the group id. /// /// The group id. Guid GetGroupId(); /// /// Gets the playing item id. /// /// The playing item id. Guid GetPlayingItemId(); /// /// Checks if the group is empty. /// /// If the group is empty. bool IsGroupEmpty(); /// /// Initializes the group with the session's info. /// /// The session. /// The cancellation token. void CreateGroup(SessionInfo session, CancellationToken cancellationToken); /// /// Adds the session to the group. /// /// The session. /// The request. /// The cancellation token. void SessionJoin(SessionInfo session, JoinGroupRequest request, CancellationToken cancellationToken); /// /// Removes the session from the group. /// /// The session. /// The cancellation token. void SessionLeave(SessionInfo session, CancellationToken cancellationToken); /// /// Handles the requested action by the session. /// /// The session. /// The requested action. /// The cancellation token. void HandleRequest(SessionInfo session, PlaybackRequest request, CancellationToken cancellationToken); /// /// Gets the info about the group for the clients. /// /// The group info for the clients. GroupInfoView GetInfo(); } }