public void BeginTransaction( out UncommittedRecord <ChainedHeader> chainTip, out UncommittedRecord <int> unspentTxCount, out UncommittedRecord <int> unspentOutputCount, out UncommittedRecord <int> totalTxCount, out UncommittedRecord <int> totalInputCount, out UncommittedRecord <int> totalOutputCount, out UncommittedRecord <ImmutableSortedDictionary <UInt256, ChainedHeader> .Builder> headers, out UncommittedRecord <ImmutableSortedDictionary <UInt256, UnspentTx> .Builder> unspentTransactions, out UncommittedRecord <ImmutableSortedDictionary <TxOutputKey, TxOutput> .Builder> unspentTxOutputs, out UncommittedRecord <ImmutableDictionary <int, BlockSpentTxes> .Builder> blockSpentTxes, out UncommittedRecord <ImmutableDictionary <UInt256, IImmutableList <UnmintedTx> > .Builder> blockUnmintedTxes) { lock (this.lockObject) { chainTip = this.chainTip.AsUncommitted(); unspentTxCount = this.unspentTxCount.AsUncommitted(); unspentOutputCount = this.unspentOutputCount.AsUncommitted(); totalTxCount = this.totalTxCount.AsUncommitted(); totalInputCount = this.totalInputCount.AsUncommitted(); totalOutputCount = this.totalOutputCount.AsUncommitted(); headers = this.headers.AsUncommitted(x => x.ToImmutable().ToBuilder()); unspentTransactions = this.unspentTransactions.AsUncommitted(x => x.ToImmutable().ToBuilder()); unspentTxOutputs = this.unspentTxOutputs.AsUncommitted(x => x.ToImmutable().ToBuilder()); blockSpentTxes = this.blockSpentTxes.AsUncommitted(x => x.ToImmutable().ToBuilder()); blockUnmintedTxes = this.blockUnmintedTxes.AsUncommitted(x => x.ToImmutable().ToBuilder()); } }
public MemoryChainStateStorage(ChainedHeader chainTip = null, int?unspentTxCount = null, int?totalTxCount = null, int?totalInputCount = null, int?totalOutputCount = null, int?unspentOutputCount = null, ImmutableSortedDictionary <UInt256, ChainedHeader> headers = null, ImmutableSortedDictionary <UInt256, UnspentTx> unspentTransactions = null, ImmutableDictionary <int, BlockSpentTxes> blockSpentTxes = null, ImmutableDictionary <UInt256, IImmutableList <UnmintedTx> > blockUnmintedTxes = null) { this.chainTip = CommittedRecord <ChainedHeader> .Initial(chainTip); this.unspentTxCount = CommittedRecord <int> .Initial(unspentTxCount ?? 0); this.unspentOutputCount = CommittedRecord <int> .Initial(unspentOutputCount ?? 0); this.totalTxCount = CommittedRecord <int> .Initial(totalTxCount ?? 0); this.totalInputCount = CommittedRecord <int> .Initial(totalInputCount ?? 0); this.totalOutputCount = CommittedRecord <int> .Initial(totalOutputCount ?? 0); this.headers = CommittedRecord <ImmutableSortedDictionary <UInt256, ChainedHeader> .Builder> .Initial( headers?.ToBuilder() ?? ImmutableSortedDictionary.CreateBuilder <UInt256, ChainedHeader>()); this.unspentTransactions = CommittedRecord <ImmutableSortedDictionary <UInt256, UnspentTx> .Builder> .Initial( unspentTransactions?.ToBuilder() ?? ImmutableSortedDictionary.CreateBuilder <UInt256, UnspentTx>()); this.unspentTxOutputs = CommittedRecord <ImmutableSortedDictionary <TxOutputKey, TxOutput> .Builder> .Initial( ImmutableSortedDictionary.CreateBuilder <TxOutputKey, TxOutput>()); this.blockSpentTxes = CommittedRecord <ImmutableDictionary <int, BlockSpentTxes> .Builder> .Initial( blockSpentTxes?.ToBuilder() ?? ImmutableDictionary.CreateBuilder <int, BlockSpentTxes>()); this.blockUnmintedTxes = CommittedRecord <ImmutableDictionary <UInt256, IImmutableList <UnmintedTx> > .Builder> .Initial( blockUnmintedTxes?.ToBuilder() ?? ImmutableDictionary.CreateBuilder <UInt256, IImmutableList <UnmintedTx> >()); }
public MemoryUnconfirmedTxesStorage() { this.chainTip = CommittedRecord <ChainedHeader> .Initial(null); this.unconfirmedTxCount = CommittedRecord <int> .Initial(0); this.unconfirmedTxes = CommittedRecord <ImmutableDictionary <UInt256, UnconfirmedTx> .Builder> .Initial( ImmutableDictionary.CreateBuilder <UInt256, UnconfirmedTx>()); this.unconfirmedTxesByPrevTxOutputKey = CommittedRecord <ImmutableDictionary <TxOutputKey, ImmutableDictionary <UInt256, UnconfirmedTx> .Builder> .Builder> .Initial( ImmutableDictionary.CreateBuilder <TxOutputKey, ImmutableDictionary <UInt256, UnconfirmedTx> .Builder>()); }
public void BeginTransaction( out UncommittedRecord <ChainedHeader> chainTip, out UncommittedRecord <int> unconfirmedTxCount, out UncommittedRecord <ImmutableDictionary <UInt256, UnconfirmedTx> .Builder> unconfirmedTxes, out UncommittedRecord <ImmutableDictionary <TxOutputKey, ImmutableDictionary <UInt256, UnconfirmedTx> .Builder> .Builder> unconfirmedTxesByPrevTxOutputKey) { lock (this.lockObject) { chainTip = this.chainTip.AsUncommitted(); unconfirmedTxCount = this.unconfirmedTxCount.AsUncommitted(); unconfirmedTxes = this.unconfirmedTxes.AsUncommitted(x => x.ToImmutable().ToBuilder()); unconfirmedTxesByPrevTxOutputKey = this.unconfirmedTxesByPrevTxOutputKey.AsUncommitted(x => x.ToImmutable().ToBuilder()); } }