public async Task StartReissuanceAsync(BobClient bobClient, IEnumerable <long> amounts, IEnumerable <long> vsizes, CancellationToken cancellationToken) { await Task.WhenAll(AmountCredentialToPresentTasks.Concat(VsizeCredentialToPresentTasks)).ConfigureAwait(false); IEnumerable <Credential> inputAmountCredentials = AmountCredentialToPresentTasks.Select(x => x.Result); IEnumerable <Credential> inputVsizeCredentials = VsizeCredentialToPresentTasks.Select(x => x.Result); var amountsToRequest = AddExtraCredentialRequests(amounts, inputAmountCredentials.Sum(x => x.Value)); var vsizesToRequest = AddExtraCredentialRequests(vsizes, inputVsizeCredentials.Sum(x => x.Value)); (IEnumerable <Credential> RealAmountCredentials, IEnumerable <Credential> RealVsizeCredentials)result = await bobClient.ReissueCredentialsAsync( amountsToRequest, vsizesToRequest, inputAmountCredentials, inputVsizeCredentials, cancellationToken).ConfigureAwait(false); // TODO keep the credentials that were not needed by the graph var(amountCredentials, _) = SeparateExtraCredentials(result.RealAmountCredentials, amounts); var(vsizeCredentials, _) = SeparateExtraCredentials(result.RealVsizeCredentials, vsizes); foreach (var(tcs, credential) in AmountCredentialTasks.Zip(amountCredentials)) { tcs.SetResult(credential); } foreach (var(tcs, credential) in VsizeCredentialTasks.Zip(vsizeCredentials)) { tcs.SetResult(credential); } }
public async Task ConfirmConnectionTaskAsync( TimeSpan connectionConfirmationTimeout, AliceClient aliceClient, IEnumerable <long> amounts, IEnumerable <long> vsizes, Money effectiveValue, int vsizeValue, RoundStateUpdater roundStateUpdater, CancellationToken cancellationToken) { var amountsToRequest = AddExtraCredentialRequests(amounts, effectiveValue.Satoshi); var vsizesToRequest = AddExtraCredentialRequests(vsizes, vsizeValue); await aliceClient.ConfirmConnectionAsync(connectionConfirmationTimeout, amountsToRequest, vsizesToRequest, roundStateUpdater, cancellationToken).ConfigureAwait(false); // TODO keep extra credentials var(amountCredentials, _) = SeparateExtraCredentials(aliceClient.IssuedAmountCredentials, amounts); var(vsizeCredentials, _) = SeparateExtraCredentials(aliceClient.IssuedVsizeCredentials, vsizes); foreach (var(tcs, credential) in AmountCredentialTasks.Zip(amountCredentials)) { tcs.SetResult(credential); } foreach (var(tcs, credential) in VsizeCredentialTasks.Zip(vsizeCredentials)) { tcs.SetResult(credential); } }