Esempio n. 1
0
        public InProgress(ITransactionProgress t, params ITransactionProgress[] chains)
        {
            List <ITransactionProgress> ch = new List <ITransactionProgress> {
                t
            };

            if (chains != null)
            {
                ch.AddRange(chains);
            }
            _chains = ch;
        }
Esempio n. 2
0
        private async Task <(object result, bool state)> InternalCheckForFinish(CancellationToken token = default(CancellationToken))
        {
            (object result, bool done)r;
            do
            {
                ITransactionProgress p = _chains[_index];
                r = await p.CheckForFinishAsync(_input, token).ConfigureAwait(false);

                if (r.done)
                {
                    _index++;
                    if (_chains.Count == _index)
                    {
                        return(r);
                    }
                    _input = r.result;
                }
            } while (r.done);

            return(r);
        }