BitSharp.Core.Storage.Memory.MemoryUnconfirmedTxesCursor.TryAddTransaction C# (CSharp) Method

TryAddTransaction() public method

public TryAddTransaction ( UnconfirmedTx unconfirmedTx ) : bool
unconfirmedTx BitSharp.Core.Domain.UnconfirmedTx
return bool
        public bool TryAddTransaction(UnconfirmedTx unconfirmedTx)
        {
            CheckWriteTransaction();

            try
            {
                unconfirmedTxes.Modify(x => x.Add(unconfirmedTx.Hash, unconfirmedTx));

                // update index of txes spending each input's prev tx
                for (var inputIndex = 0; inputIndex < unconfirmedTx.Transaction.Inputs.Length; inputIndex++)
                {
                    var input = unconfirmedTx.Transaction.Inputs[inputIndex];

                    unconfirmedTxesByPrevTxOutputKey.Modify(_ => { });
                    ImmutableDictionary<UInt256, UnconfirmedTx>.Builder unconfirmedTxes;
                    if (unconfirmedTxesByPrevTxOutputKey.Value.TryGetValue(input.PrevTxOutputKey, out unconfirmedTxes))
                        // ensure a copy of the builder is modified or underlying storage will see uncomitted state
                        unconfirmedTxes = unconfirmedTxes.ToImmutable().ToBuilder();
                    else
                        unconfirmedTxes = ImmutableDictionary.CreateBuilder<UInt256, UnconfirmedTx>();

                    unconfirmedTxes.Add(unconfirmedTx.Hash, unconfirmedTx);
                    unconfirmedTxesByPrevTxOutputKey.Value[input.PrevTxOutputKey] = unconfirmedTxes;
                }

                return true;
            }
            catch (ArgumentException)
            {
                return false;
            }
        }