public async Task <IMessageExchange> GetMessageExchanger(IMessageExchangeParameters messageExchangeParameters, IPod pod, IMessageProgress messageProgress, CancellationToken ct) { if (RileyLinkInstance == null) { RileyLinkInstance = new RileyLink(); } if (RileyLinkMessageExchange == null) { RileyLinkMessageExchange = new RileyLinkMessageExchange(messageExchangeParameters, pod, RileyLinkInstance); } else { RileyLinkMessageExchange.UpdateParameters(messageExchangeParameters, pod, RileyLinkInstance); } await RileyLinkMessageExchange.InitializeExchange(messageProgress, ct); return(RileyLinkMessageExchange); }
public void UpdateParameters(IMessageExchangeParameters messageExchangeParameters, IPod pod, RileyLink rileyLinkInstance) { RileyLink = rileyLinkInstance; Pod = pod; MessageExchangeParameters = messageExchangeParameters as ErosMessageExchangeParameters; }
public async Task <PodCommandResult> PerformExchange(IMessage requestMessage, IMessageExchangeParameters messageExchangeParameters, IMessageProgress messageProgress, CancellationToken ct) { var previousContext = SynchronizationContext.Current; try { // SynchronizationContext.SetSynchronizationContext(MessageSynchronizationContext); var messageExchange = await MessageExchangeProvider.GetMessageExchanger(messageExchangeParameters, Pod, messageProgress, ct).ConfigureAwait(false); var response = await messageExchange.GetResponse(requestMessage, messageProgress, ct); return(messageExchange.ParseResponse(response, Pod)); } catch (Exception e) { return(new PodCommandResult() { Success = false }); } finally { // SynchronizationContext.SetSynchronizationContext(previousContext); } }
internal RileyLinkMessageExchange(IMessageExchangeParameters messageExchangeParameters, IPod pod, RileyLink rileyLinkInstance) { RileyLink = rileyLinkInstance; Pod = pod; MessageExchangeParameters = messageExchangeParameters as ErosMessageExchangeParameters; }