From 04c98ac6dff524f1f79f87121cce5f1041103ef2 Mon Sep 17 00:00:00 2001 From: Mike Zak Date: Sun, 6 Jun 2021 12:49:52 +0300 Subject: [PATCH] Add constructors to all main objects --- domain/miningmanager/mempool/mempool.go | 13 +++++++++++++ domain/miningmanager/mempool/mempool_utxo_set.go | 8 ++++++++ domain/miningmanager/mempool/orphan_pool.go | 14 ++++++++++++-- domain/miningmanager/mempool/transactions_pool.go | 11 +++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/domain/miningmanager/mempool/mempool.go b/domain/miningmanager/mempool/mempool.go index b79ef7635..d4d4f17a9 100644 --- a/domain/miningmanager/mempool/mempool.go +++ b/domain/miningmanager/mempool/mempool.go @@ -3,6 +3,19 @@ package mempool import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" type mempool struct { + mempoolUTXOSet *mempoolUTXOSet + transactionsPool *transactionsPool + orphansPool *orphansPool +} + +func newMempool() *mempool { + mp := &mempool{} + + mp.mempoolUTXOSet = newMempoolUTXOSet(mp) + mp.transactionsPool = newTransactionsPool(mp) + mp.orphansPool = newOrphansPool(mp) + + return mp } func (mp *mempool) ValidateAndInsertTransaction(transaction *externalapi.DomainTransaction, isHighPriority bool) ( diff --git a/domain/miningmanager/mempool/mempool_utxo_set.go b/domain/miningmanager/mempool/mempool_utxo_set.go index 16851a43f..42b9624a5 100644 --- a/domain/miningmanager/mempool/mempool_utxo_set.go +++ b/domain/miningmanager/mempool/mempool_utxo_set.go @@ -5,9 +5,17 @@ import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" type outpointToUTXOEntry map[externalapi.DomainOutpoint]externalapi.UTXOEntry type mempoolUTXOSet struct { + mempool *mempool poolUnspentOutputs outpointToUTXOEntry } +func newMempoolUTXOSet(mp *mempool) *mempoolUTXOSet { + return &mempoolUTXOSet{ + mempool: mp, + poolUnspentOutputs: outpointToUTXOEntry{}, + } +} + func (mpus *mempoolUTXOSet) getParentsInPool(transaction *mempoolTransaction) ([]*mempoolTransaction, error) { panic("mempoolUTXOSet.getParentsInPool not implemented") // TODO (Mike) } diff --git a/domain/miningmanager/mempool/orphan_pool.go b/domain/miningmanager/mempool/orphan_pool.go index 5b81bd06c..64b7471b1 100644 --- a/domain/miningmanager/mempool/orphan_pool.go +++ b/domain/miningmanager/mempool/orphan_pool.go @@ -2,14 +2,24 @@ package mempool import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" -type orphanByPreviousOutpoint map[externalapi.DomainOutpoint]idToTransaction +type previousOutpointToOrphans map[externalapi.DomainOutpoint]idToTransaction type orphansPool struct { + mempool *mempool allOrphans idToTransaction - orphanByPreviousOutpoint orphanByPreviousOutpoint + orphanByPreviousOutpoint previousOutpointToOrphans previousExpireScan uint64 } +func newOrphansPool(mp *mempool) *orphansPool { + return &orphansPool{ + mempool: mp, + allOrphans: idToTransaction{}, + orphanByPreviousOutpoint: previousOutpointToOrphans{}, + previousExpireScan: 0, + } +} + func (op *orphansPool) maybeAddOrphan(transaction *externalapi.DomainTransaction, missingParents []*externalapi.DomainTransactionID, isHighPriority bool) error { diff --git a/domain/miningmanager/mempool/transactions_pool.go b/domain/miningmanager/mempool/transactions_pool.go index a7dcf816b..829e7dd45 100644 --- a/domain/miningmanager/mempool/transactions_pool.go +++ b/domain/miningmanager/mempool/transactions_pool.go @@ -7,12 +7,23 @@ type outpointToTransaction map[externalapi.DomainOutpoint]*mempoolTransaction type transactionsByFeeHeap []*mempoolTransaction type transactionsPool struct { + mempool *mempool allTransactions idToTransaction highPriorityTransactions idToTransaction chainedTransactionsByPreviousOutpoint outpointToTransaction transactionsByFeeRate transactionsByFeeHeap } +func newTransactionsPool(mp *mempool) *transactionsPool { + return &transactionsPool{ + mempool: mp, + allTransactions: idToTransaction{}, + highPriorityTransactions: idToTransaction{}, + chainedTransactionsByPreviousOutpoint: outpointToTransaction{}, + transactionsByFeeRate: transactionsByFeeHeap{}, + } +} + func (tp *transactionsPool) addTransaction(transaction *externalapi.DomainTransaction, parentsInPool []*mempoolTransaction) error { panic("transactionsPool.addTransaction not implemented") // TODO (Mike) }