-
Notifications
You must be signed in to change notification settings - Fork 0
/
pool.go
56 lines (45 loc) · 1012 Bytes
/
pool.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package fees
import (
"fmt"
"github.com/aximchain/axc-cosmos-sdk/types"
)
// block level pool
var Pool pool = newPool()
type pool struct {
fees map[string]types.Fee // TxHash -> fee
committedFees types.Fee
}
func newPool() pool {
return pool{
fees: map[string]types.Fee{},
committedFees: types.Fee{},
}
}
func (p *pool) AddFee(txHash string, fee types.Fee) {
p.fees[txHash] = fee
}
func (p *pool) AddAndCommitFee(txHash string, fee types.Fee) {
p.fees[txHash] = fee
p.committedFees.AddFee(fee)
}
func (p *pool) CommitFee(txHash string) {
if fee, ok := p.fees[txHash]; ok {
p.committedFees.AddFee(fee)
} else {
panic(fmt.Errorf("commit fee for an invalid TxHash(%s)", txHash))
}
}
func (p pool) BlockFees() types.Fee {
return p.committedFees
}
func (p *pool) Clear() {
p.fees = map[string]types.Fee{}
p.committedFees = types.Fee{}
}
func (p *pool) GetFee(txHash string) *types.Fee {
if fee, ok := p.fees[txHash]; ok {
return &fee
} else {
return nil
}
}