Пример #1
0
        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);
        }
Пример #2
0
 public void UpdateParameters(IMessageExchangeParameters messageExchangeParameters, IPod pod, RileyLink rileyLinkInstance)
 {
     RileyLink = rileyLinkInstance;
     Pod       = pod;
     MessageExchangeParameters = messageExchangeParameters as ErosMessageExchangeParameters;
 }
Пример #3
0
        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);
            }
        }
Пример #4
0
 internal RileyLinkMessageExchange(IMessageExchangeParameters messageExchangeParameters, IPod pod, RileyLink rileyLinkInstance)
 {
     RileyLink = rileyLinkInstance;
     Pod       = pod;
     MessageExchangeParameters = messageExchangeParameters as ErosMessageExchangeParameters;
 }