private async Task <MediaStatus> SendAsync(IMessageWithId message) { var application = await ReceiverChannel.EnsureConnection(Namespace); switch (message) { case SessionMessage sessionMessage: sessionMessage.SessionId = application.SessionId; break; case MediaSessionMessage mediaSessionMessage: SetMediaSessionId(mediaSessionMessage); break; } try { return((await SendAsync <MediaStatusMessage>(message, application.TransportId)).Status?.FirstOrDefault()); } catch (Exception) { Status = null; throw; } }
public async Task <TResponse> SendAsync <TResponse>(string ns, IMessageWithId message, string destinationId) where TResponse : IMessageWithId { var taskCompletionSource = new TaskCompletionSource <TResponse>(); WaitingTasks[message.RequestId] = taskCompletionSource; await SendAsync(ns, message, destinationId); return(await taskCompletionSource.Task.TimeoutAfter(RECEIVE_TIMEOUT)); }
public async Task <TResponse> SendAsync <TResponse>(string ns, IMessageWithId message, string destinationId) where TResponse : IMessageWithId { var taskCompletionSource = new TaskCompletionSource <TResponse>(); WaitingTasks[message.RequestId] = taskCompletionSource; await SendAsync(ns, message, destinationId); if (message is StopMessage) { return(default);
private async Task <MediaStatus> SendAsync(IMessageWithId message, ChromecastApplication application) { try { return((await SendAsync <MediaStatusMessage>(message, application.TransportId)).Status?.FirstOrDefault()); } catch (Exception) { Status = null; throw; } }
private async Task <MediaStatus> SendAsync(IMessageWithId message) { try { return((await SendAsync <MediaStatusMessage>(message, (await GetApplicationAsync()).TransportId)).Status?.FirstOrDefault()); } catch (Exception) { ((IStatusChannel)this).Status = null; throw; } }
private async Task <MediaStatus> SendAsync(IMessageWithId message, Application application) { application = (application ?? await ReceiverChannel.EnsureConnection(Namespace)); try { return((await SendAsync <MediaStatusMessage>(message, application.TransportId)).Status?.FirstOrDefault()); } catch (Exception) { Status = null; throw; } }
private async Task <MediaStatus> SendAsync(ISender sender, IMessageWithId message) { try { var sessionId = await _getCurrentSessionId.Invoke(); var response = await sender.SendAsync <MediaStatusMessage>(Namespace, message, sessionId); return(response?.Status?.FirstOrDefault()); } catch (Exception) { ((IStatusChannel)this).Status = null; return(null); } }
/// <summary> /// Sends a message and waits the result /// </summary> /// <typeparam name="TResponse">response type</typeparam> /// <param name="message">message to send</param> /// <param name="destinationId">destination identifier</param> /// <returns>the result</returns> protected async Task <TResponse> SendAsync <TResponse>(IMessageWithId message, string destinationId = DefaultIdentifiers.DESTINATION_ID) where TResponse : IMessageWithId { return(await Client.SendAsync <TResponse>(Namespace, message, destinationId)); }