private string GenerateStringFromCache() { var cacheStringBuilder = new StringBuilder(); _eventCache.ToList().ForEach( ideEvent => cacheStringBuilder.Append( EventMappingUtils.GetAbstractStringOf(ideEvent) + StatisticStringSeparator)); return(cacheStringBuilder.ToString().TrimEnd(StatisticStringSeparator)); }
public async Task <Transaction> GetSendingTxAsync(BitcoinAddress destination, Money amount, NRustLightningNetwork network, CancellationToken cancellationToken = default) { var deriv = await GetOurDerivationStrategyAsync(network, cancellationToken).ConfigureAwait(false); var nbXplorerClient = _nbXplorerClientProvider.GetClient(network); await _outpointAssumedAsSpentLock.WaitAsync(cancellationToken); try { var req = new CreatePSBTRequest() { Destinations = new[] { amount == Money.Zero ? new CreatePSBTDestination { SweepAll = true, Destination = destination } : new CreatePSBTDestination { Amount = amount, Destination = destination } , }.ToList(), ExcludeOutpoints = _outpointAssumedAsSpent.ToList() }; var psbtResponse = await nbXplorerClient.CreatePSBTAsync(deriv, req, cancellationToken) .ConfigureAwait(false); var psbt = await SignPSBT(psbtResponse.PSBT, network); if (!psbt.IsAllFinalized()) { psbt.Finalize(); } var tx = psbt.ExtractTransaction(); foreach (var prevOut in tx.Inputs.Select(txIn => txIn.PrevOut)) { _outpointAssumedAsSpent.Enqueue(prevOut); } return(tx); } finally { _outpointAssumedAsSpentLock.Release(); } }
public void FixedSizeQueueWillDequeuesOldValuesWhenFull() { int queueSize = 5; List<int> dataSet = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; List<int> expected = new List<int> { 5, 6, 7, 8, 9 }; FixedSizeQueue<int> queue = new FixedSizeQueue<int>(queueSize); foreach (int data in dataSet) { queue.Enqueue(data); } List<int> actual = queue.ToList<int>(); Assert.Equal(queueSize, queue.Size); Assert.Equal<int>(expected, actual); }