Add constructors to all main objects

This commit is contained in:
Mike Zak 2021-06-06 12:49:52 +03:00
parent 94ddf0aab0
commit 04c98ac6df
4 changed files with 44 additions and 2 deletions

View File

@ -3,6 +3,19 @@ package mempool
import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
type mempool struct { 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) ( func (mp *mempool) ValidateAndInsertTransaction(transaction *externalapi.DomainTransaction, isHighPriority bool) (

View File

@ -5,9 +5,17 @@ import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
type outpointToUTXOEntry map[externalapi.DomainOutpoint]externalapi.UTXOEntry type outpointToUTXOEntry map[externalapi.DomainOutpoint]externalapi.UTXOEntry
type mempoolUTXOSet struct { type mempoolUTXOSet struct {
mempool *mempool
poolUnspentOutputs outpointToUTXOEntry poolUnspentOutputs outpointToUTXOEntry
} }
func newMempoolUTXOSet(mp *mempool) *mempoolUTXOSet {
return &mempoolUTXOSet{
mempool: mp,
poolUnspentOutputs: outpointToUTXOEntry{},
}
}
func (mpus *mempoolUTXOSet) getParentsInPool(transaction *mempoolTransaction) ([]*mempoolTransaction, error) { func (mpus *mempoolUTXOSet) getParentsInPool(transaction *mempoolTransaction) ([]*mempoolTransaction, error) {
panic("mempoolUTXOSet.getParentsInPool not implemented") // TODO (Mike) panic("mempoolUTXOSet.getParentsInPool not implemented") // TODO (Mike)
} }

View File

@ -2,14 +2,24 @@ package mempool
import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" import "github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
type orphanByPreviousOutpoint map[externalapi.DomainOutpoint]idToTransaction type previousOutpointToOrphans map[externalapi.DomainOutpoint]idToTransaction
type orphansPool struct { type orphansPool struct {
mempool *mempool
allOrphans idToTransaction allOrphans idToTransaction
orphanByPreviousOutpoint orphanByPreviousOutpoint orphanByPreviousOutpoint previousOutpointToOrphans
previousExpireScan uint64 previousExpireScan uint64
} }
func newOrphansPool(mp *mempool) *orphansPool {
return &orphansPool{
mempool: mp,
allOrphans: idToTransaction{},
orphanByPreviousOutpoint: previousOutpointToOrphans{},
previousExpireScan: 0,
}
}
func (op *orphansPool) maybeAddOrphan(transaction *externalapi.DomainTransaction, func (op *orphansPool) maybeAddOrphan(transaction *externalapi.DomainTransaction,
missingParents []*externalapi.DomainTransactionID, isHighPriority bool) error { missingParents []*externalapi.DomainTransactionID, isHighPriority bool) error {

View File

@ -7,12 +7,23 @@ type outpointToTransaction map[externalapi.DomainOutpoint]*mempoolTransaction
type transactionsByFeeHeap []*mempoolTransaction type transactionsByFeeHeap []*mempoolTransaction
type transactionsPool struct { type transactionsPool struct {
mempool *mempool
allTransactions idToTransaction allTransactions idToTransaction
highPriorityTransactions idToTransaction highPriorityTransactions idToTransaction
chainedTransactionsByPreviousOutpoint outpointToTransaction chainedTransactionsByPreviousOutpoint outpointToTransaction
transactionsByFeeRate transactionsByFeeHeap 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 { func (tp *transactionsPool) addTransaction(transaction *externalapi.DomainTransaction, parentsInPool []*mempoolTransaction) error {
panic("transactionsPool.addTransaction not implemented") // TODO (Mike) panic("transactionsPool.addTransaction not implemented") // TODO (Mike)
} }