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, IPlaybackGroupRequest request, CancellationToken cancellationToken);
///
/// Gets the info about the group for the clients.
///
/// The group info for the clients.
GroupInfoDto GetInfo();
}
}