/// <summary> /// Posts the specified request. /// </summary> /// <param name="request">The request.</param> public void Post(BrowseTo request) { var command = new BrowseRequest { Context = request.Context, ItemId = request.ItemId, ItemName = request.ItemName, ItemType = request.ItemType }; var task = _sessionManager.SendBrowseCommand(request.Id, command, CancellationToken.None); Task.WaitAll(task); }
/// <summary> /// Browses to. /// </summary> /// <param name="request">The request.</param> /// <returns>Task.</returns> /// <exception cref="ResourceNotFoundException"></exception> /// <exception cref="System.ArgumentException"></exception> /// <exception cref="System.InvalidOperationException">The requested session does not have an open web socket.</exception> private async Task BrowseTo(BrowseTo request) { var session = _sessionManager.Sessions.FirstOrDefault(i => i.Id == request.Id); if (session == null) { throw new ResourceNotFoundException(string.Format("Session {0} not found.", request.Id)); } if (!session.SupportsRemoteControl) { throw new ArgumentException(string.Format("Session {0} does not support remote control.", session.Id)); } var socket = session.WebSockets.OrderByDescending(i => i.LastActivityDate).FirstOrDefault(i => i.State == WebSocketState.Open); if (socket != null) { try { await socket.SendAsync(new WebSocketMessage <BrowseTo> { MessageType = "Browse", Data = request }, CancellationToken.None).ConfigureAwait(false); } catch (Exception ex) { Logger.ErrorException("Error sending web socket message", ex); } } else { throw new InvalidOperationException("The requested session does not have an open web socket."); } }
/// <summary> /// Posts the specified request. /// </summary> /// <param name="request">The request.</param> public void Post(BrowseTo request) { var task = BrowseTo(request); Task.WaitAll(task); }