using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Session;
using MediaBrowser.Model.System;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Session
{
public interface ISessionController
{
///
/// Gets a value indicating whether this instance is session active.
///
/// true if this instance is session active; otherwise, false.
bool IsSessionActive { get; }
///
/// Gets a value indicating whether [supports media remote control].
///
/// true if [supports media remote control]; otherwise, false.
bool SupportsMediaControl { get; }
///
/// Sends the play command.
///
/// The command.
/// The cancellation token.
/// Task.
Task SendPlayCommand(PlayRequest command, CancellationToken cancellationToken);
///
/// Sends the playstate command.
///
/// The command.
/// The cancellation token.
/// Task.
Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken);
///
/// Sends the generic command.
///
/// The command.
/// The cancellation token.
/// Task.
Task SendGeneralCommand(GeneralCommand command, CancellationToken cancellationToken);
///
/// Sends the library update info.
///
/// The info.
/// The cancellation token.
/// Task.
Task SendLibraryUpdateInfo(LibraryUpdateInfo info, CancellationToken cancellationToken);
///
/// Sends the restart required message.
///
/// The information.
/// The cancellation token.
/// Task.
Task SendRestartRequiredNotification(SystemInfo info, CancellationToken cancellationToken);
///
/// Sends the user data change info.
///
/// The info.
/// The cancellation token.
/// Task.
Task SendUserDataChangeInfo(UserDataChangeInfo info, CancellationToken cancellationToken);
///
/// Sends the server shutdown notification.
///
/// The cancellation token.
/// Task.
Task SendServerShutdownNotification(CancellationToken cancellationToken);
///
/// Sends the session ended notification.
///
/// The session information.
/// The cancellation token.
/// Task.
Task SendSessionEndedNotification(SessionInfoDto sessionInfo, CancellationToken cancellationToken);
///
/// Sends the playback start notification.
///
/// The session information.
/// The cancellation token.
/// Task.
Task SendPlaybackStartNotification(SessionInfoDto sessionInfo, CancellationToken cancellationToken);
///
/// Sends the playback start notification.
///
/// The session information.
/// The cancellation token.
/// Task.
Task SendPlaybackStoppedNotification(SessionInfoDto sessionInfo, CancellationToken cancellationToken);
///
/// Sends the server restart notification.
///
/// The cancellation token.
/// Task.
Task SendServerRestartNotification(CancellationToken cancellationToken);
///
/// Sends the message.
///
///
/// The name.
/// The data.
/// The cancellation token.
/// Task.
Task SendMessage(string name, T data, CancellationToken cancellationToken);
}
}