/
ppc_ca_table.go
57 lines (49 loc) · 1.62 KB
/
ppc_ca_table.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
57
package txfilter
import (
"github.com/ethereum/go-ethereum/common"
"fmt"
)
var (
EthAuthTable *AuthTable
)
// TODO: merge this map into PosTable
type AuthTable struct {
AuthItemMap map[common.Address]*AuthItem `json:"auth_item_map"`
}
type AuthItem struct {
ApprovedTxDataHash []byte `json:"approved_tx_data_hash"`
PermitHeight int64 `json:"auth_height"`
StartHeight int64 `json:"start_height"`
EndHeight int64 `json:"end_height"`
}
func CreateAuthTable() *AuthTable {
if EthAuthTable != nil {
panic("txfilter.EthPermitTable already exist")
}
EthAuthTable = NewAuthTable()
return EthAuthTable
}
func NewAuthTable() *AuthTable {
return &AuthTable{
AuthItemMap: make(map[common.Address]*AuthItem),
}
}
func (permitTable *AuthTable) InsertAuthItem(permittedAddr common.Address, pi *AuthItem) error {
fmt.Printf("insert pmi %v for permittedAddr %X", pi, permittedAddr)
EthPosTable.ChangedFlagThisBlock = true
if _, ok := permitTable.AuthItemMap[permittedAddr]; ok {
return fmt.Errorf("InsertAuthItem, permittedAddr %X already exist", permittedAddr)
}
permitTable.AuthItemMap[permittedAddr] = pi
return nil
}
func (permitTable *AuthTable) DeleteAuthItem(permittedAddr common.Address) error {
fmt.Printf("delete pmi for permittedAddr %X", permittedAddr)
if _, ok := permitTable.AuthItemMap[permittedAddr]; !ok {
fmt.Printf("DeleteAuthItem, permittedAddr %X does not exist \n", permittedAddr)
return fmt.Errorf("DeletePermitItem, permittedAddr %X does not exist \n", permittedAddr)
}
EthPosTable.ChangedFlagThisBlock = true
delete(permitTable.AuthItemMap, permittedAddr)
return nil
}