forked from TrueCloudLab/neoneo-go
mempool: store only pointer in the verifiedMap
It's only used for presence checks, there is no need for metadata here.
This commit is contained in:
parent
a2d9b89964
commit
fe1f1d19be
1 changed files with 9 additions and 9 deletions
|
@ -46,7 +46,7 @@ type utilityBalanceAndFees struct {
|
|||
// Pool stores the unconfirms transactions.
|
||||
type Pool struct {
|
||||
lock sync.RWMutex
|
||||
verifiedMap map[util.Uint256]item
|
||||
verifiedMap map[util.Uint256]*transaction.Transaction
|
||||
verifiedTxes items
|
||||
fees map[util.Uint160]utilityBalanceAndFees
|
||||
|
||||
|
@ -156,7 +156,7 @@ func (mp *Pool) Add(t *transaction.Transaction, fee Feer) error {
|
|||
return err
|
||||
}
|
||||
|
||||
mp.verifiedMap[t.Hash()] = pItem
|
||||
mp.verifiedMap[t.Hash()] = t
|
||||
// Insert into sorted array (from max to min, that could also be done
|
||||
// using sort.Sort(sort.Reverse()), but it incurs more overhead. Notice
|
||||
// also that we're searching for position that is strictly more
|
||||
|
@ -197,7 +197,7 @@ func (mp *Pool) Add(t *transaction.Transaction, fee Feer) error {
|
|||
// nothing if it doesn't).
|
||||
func (mp *Pool) Remove(hash util.Uint256) {
|
||||
mp.lock.Lock()
|
||||
if it, ok := mp.verifiedMap[hash]; ok {
|
||||
if tx, ok := mp.verifiedMap[hash]; ok {
|
||||
var num int
|
||||
delete(mp.verifiedMap, hash)
|
||||
for num = range mp.verifiedTxes {
|
||||
|
@ -210,9 +210,9 @@ func (mp *Pool) Remove(hash util.Uint256) {
|
|||
} else if num == len(mp.verifiedTxes)-1 {
|
||||
mp.verifiedTxes = mp.verifiedTxes[:num]
|
||||
}
|
||||
senderFee := mp.fees[it.txn.Sender()]
|
||||
senderFee.feeSum.Sub(senderFee.feeSum, big.NewInt(it.txn.SystemFee+it.txn.NetworkFee))
|
||||
mp.fees[it.txn.Sender()] = senderFee
|
||||
senderFee := mp.fees[tx.Sender()]
|
||||
senderFee.feeSum.Sub(senderFee.feeSum, big.NewInt(tx.SystemFee+tx.NetworkFee))
|
||||
mp.fees[tx.Sender()] = senderFee
|
||||
}
|
||||
updateMempoolMetrics(len(mp.verifiedTxes))
|
||||
mp.lock.Unlock()
|
||||
|
@ -261,7 +261,7 @@ func (mp *Pool) checkPolicy(tx *transaction.Transaction, policyChanged bool) boo
|
|||
// New returns a new Pool struct.
|
||||
func New(capacity int) *Pool {
|
||||
return &Pool{
|
||||
verifiedMap: make(map[util.Uint256]item),
|
||||
verifiedMap: make(map[util.Uint256]*transaction.Transaction),
|
||||
verifiedTxes: make([]item, 0, capacity),
|
||||
capacity: capacity,
|
||||
fees: make(map[util.Uint160]utilityBalanceAndFees),
|
||||
|
@ -272,8 +272,8 @@ func New(capacity int) *Pool {
|
|||
func (mp *Pool) TryGetValue(hash util.Uint256) (*transaction.Transaction, bool) {
|
||||
mp.lock.RLock()
|
||||
defer mp.lock.RUnlock()
|
||||
if pItem, ok := mp.verifiedMap[hash]; ok {
|
||||
return pItem.txn, ok
|
||||
if tx, ok := mp.verifiedMap[hash]; ok {
|
||||
return tx, ok
|
||||
}
|
||||
|
||||
return nil, false
|
||||
|
|
Loading…
Reference in a new issue