private Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken) { switch (command.Command) { case PlaystateCommand.Stop: _playlist.Clear(); return(_device.SetStop(CancellationToken.None)); case PlaystateCommand.Pause: return(_device.SetPause(CancellationToken.None)); case PlaystateCommand.Unpause: return(_device.SetPlay(CancellationToken.None)); case PlaystateCommand.PlayPause: return(_device.IsPaused ? _device.SetPlay(CancellationToken.None) : _device.SetPause(CancellationToken.None)); case PlaystateCommand.Seek: return(Seek(command.SeekPositionTicks ?? 0)); case PlaystateCommand.NextTrack: return(SetPlaylistIndex(_currentPlaylistIndex + 1, cancellationToken)); case PlaystateCommand.PreviousTrack: return(SetPlaylistIndex(_currentPlaylistIndex - 1, cancellationToken)); } return(Task.CompletedTask); }
public Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken) { switch (command.Command) { case PlaystateCommand.Stop: Playlist.Clear(); return(_device.SetStop()); case PlaystateCommand.Pause: return(_device.SetPause()); case PlaystateCommand.Unpause: return(_device.SetPlay()); case PlaystateCommand.Seek: { return(Seek(command.SeekPositionTicks ?? 0)); } case PlaystateCommand.NextTrack: return(SetPlaylistIndex(_currentPlaylistIndex + 1)); case PlaystateCommand.PreviousTrack: return(SetPlaylistIndex(_currentPlaylistIndex - 1)); } return(Task.FromResult(true)); }
public void Post(SendPlaystateCommand request) { var config = Plugin.Instance.Configuration; //Check Client Supports MediaControl // if (CheckSupportsMediaControl()==false) // { // _logger.Debug("FrontView+ -- Play Control -- Client does not support Media Control"); // return; // } var ClientSessionID = GetClientID(); var SessionID = config.SelectedDeviceId; _logger.Debug("--- FrontView+ Remote Command: Command Details: " + request.Command.ToString()); var command = new PlaystateRequest { Command = request.Command, SeekPositionTicks = 0 // ControllingUserId = UserID }; _logger.Debug("--- FrontView+ PlayStateCommand: Command Sent: " + request.Command + " Session Id: " + SessionID + " Client Requesting ID: " + ClientSessionID); var task = _sessionManager.SendPlaystateCommand(SessionID, ClientSessionID, command, CancellationToken.None); Task.WaitAll(task); }
private async Task SendCommand(string commandString, long?seekPosition = null) { if (CanSendCommand()) { var request = new PlaystateRequest { Command = commandString.ToPlaystateCommandEnum() }; if (seekPosition.HasValue) { request.SeekPositionTicks = seekPosition; } try { SendingCommand = true; await ApiClient.SendPlaystateCommandAsync(SelectedClient.Id, request); } catch (HttpException ex) { Utils.HandleHttpException("SendPlaystateCommand(" + commandString + ")", ex, NavigationService, Log); } SendingCommand = false; } }
private async Task SendCommand(string commandString, long?seekAmount = null) { if (CanSendCommand()) { var request = new PlaystateRequest { Command = commandString.ToPlaystateCommandEnum() }; if (seekAmount.HasValue) { request.SeekPositionTicks = SelectedClient.NowPlayingPositionTicks + seekAmount.Value; } try { SendingCommand = true; await _apiClient.SendPlaystateCommandAsync(SelectedClient.Id, request); } catch (HttpException ex) { Log.ErrorException("SendPlaystateCommand(" + commandString + ")", ex); } SendingCommand = false; } }
public Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken) { return(SendMessage(new WebSocketMessage <PlaystateRequest> { MessageType = "Playstate", Data = command }, cancellationToken)); }
public Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken) { var socket = GetActiveSocket(); return(socket.SendAsync(new WebSocketMessage <PlaystateRequest> { MessageType = "Playstate", Data = command }, cancellationToken)); }
private void send_command(PlaystateCommand type, string ContentId, Guid?userId) { PlaystateRequest command = new PlaystateRequest { Command = type, ControllingUserId = userId.HasValue ? userId.Value.ToString("N") : null }; _sessionManager.SendPlaystateCommand(ContentId, ContentId, command, CancellationToken.None); }
/// <summary> /// Sends the playstate command. /// </summary> /// <param name="sessionId">The session id.</param> /// <param name="command">The command.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> public Task SendPlaystateCommand(Guid sessionId, PlaystateRequest command, CancellationToken cancellationToken) { var session = GetSessionForRemoteControl(sessionId); if (command.Command == PlaystateCommand.Seek && !session.CanSeek) { throw new ArgumentException(string.Format("Session {0} is unable to seek.", session.Id)); } return(session.SessionController.SendPlaystateCommand(command, cancellationToken)); }
public ActionResult SendPlaystateCommand( [FromRoute, Required] string?sessionId, [FromBody] PlaystateRequest playstateRequest) { _sessionManager.SendPlaystateCommand( RequestHelpers.GetSession(_sessionManager, _authContext, Request).Id, sessionId, playstateRequest, CancellationToken.None); return(NoContent()); }
public void Post(SendPlaystateCommand request) { var command = new PlaystateRequest { Command = request.Command, SeekPositionTicks = request.SeekPositionTicks }; var task = _sessionManager.SendPlaystateCommand(GetSession(_sessionContext).Result.Id, request.Id, command, CancellationToken.None); Task.WaitAll(task); }
private void send_seek_command(long?ticks, string ContentId, Guid?userId) { Plugin.DebugLogger($"Seeking to {ticks}"); PlaystateRequest command = new PlaystateRequest { Command = PlaystateCommand.Seek, SeekPositionTicks = ticks, ControllingUserId = userId.HasValue ? userId.Value.ToString("N") : null }; _sessionManager.SendPlaystateCommand(ContentId, ContentId, command, CancellationToken.None); }
public Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken) { var args = new Dictionary <string, string>(); if (command.Command == PlaystateCommand.Seek) { if (!command.SeekPositionTicks.HasValue) { throw new ArgumentException("SeekPositionTicks cannot be null"); } args["SeekPositionTicks"] = command.SeekPositionTicks.Value.ToString(CultureInfo.InvariantCulture); } return(SendMessage(command.Command.ToString(), args, cancellationToken)); }
public Task SendPlaystateCommand(PlaystateRequest command, CancellationToken cancellationToken) { switch (command.Command) { case PlaystateCommand.Stop: Playlist.Clear(); return(_device.SetStop()); case PlaystateCommand.Pause: return(_device.SetPause()); case PlaystateCommand.Unpause: return(_device.SetPlay()); case PlaystateCommand.Seek: var playlistItem = Playlist.FirstOrDefault(p => p.PlayState == 1); if (playlistItem != null && playlistItem.Transcode && playlistItem.IsVideo && _currentItem != null) { var newItem = CreatePlaylistItem(_currentItem, command.SeekPositionTicks ?? 0, GetServerAddress()); playlistItem.StartPositionTicks = newItem.StartPositionTicks; playlistItem.StreamUrl = newItem.StreamUrl; playlistItem.Didl = newItem.Didl; return(_device.SetAvTransport(playlistItem.StreamUrl, playlistItem.DlnaHeaders, playlistItem.Didl)); } return(_device.Seek(TimeSpan.FromTicks(command.SeekPositionTicks ?? 0))); case PlaystateCommand.NextTrack: _currentItem = null; return(SetNext()); case PlaystateCommand.PreviousTrack: _currentItem = null; return(SetPrevious()); } return(Task.FromResult(true)); }
public Task SendPlaystateCommand(string controllingSessionId, string sessionId, PlaystateRequest command, CancellationToken cancellationToken) { var session = GetSessionForRemoteControl(sessionId); var controllingSession = GetSession(controllingSessionId); AssertCanControl(session, controllingSession); if (controllingSession.UserId.HasValue) { command.ControllingUserId = controllingSession.UserId.Value.ToString("N"); } return(session.SessionController.SendPlaystateCommand(command, cancellationToken)); }