Exemplo n.º 1
0
        // Get the next TransportCommand, process it, and pass it on the next route.
        // If a command was processed, it returns the TransportCommand that was processed, and its TResult
        public async Task <Option <Tuple <TransportCommand <TCmd, TMetadata, TRoute>, TResult> > > Run()
        {
            Option <TransportCommand <TCmd, TMetadata, TRoute> > sqsCommand = await _commandSource.GetNextTransportCommand();

            Option <TResult> result = await sqsCommand.MapAsync(ProcessCommand);

            await sqsCommand.MapAsync(_commandSource.AckTransportCommand);

            return(from c in sqsCommand
                   from r in result
                   select Tuple.Create(c, r));
        }