The core protocol of WoopChain
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
woop/rosetta/common/local_fix.go

78 lines
1.4 KiB

package common
import (
"encoding/csv"
"os"
"strings"
8 months ago
"github.com/woop-chain/woop/internal/utils"
)
var defaultFix *LocalFix
func init() {
defaultFix = &LocalFix{
txForceSuccess: make(map[string]bool),
txForceFailed: make(map[string]bool),
}
}
func InitRosettaFile(file string) {
defaultFix.fixFile = file
defaultFix.init()
}
func GetDefaultFix() *LocalFix {
return defaultFix
}
type LocalFix struct {
txForceSuccess map[string]bool
txForceFailed map[string]bool
fixFile string
}
func (f *LocalFix) init() {
if _, err := os.Stat(f.fixFile); !os.IsNotExist(err) {
fixCsv, err := os.Open(f.fixFile)
if err != nil {
return
}
defer fixCsv.Close()
reader := csv.NewReader(fixCsv)
count := 0
for {
read, err := reader.Read()
if err != nil {
break
}
if len(read) != 2 {
continue
}
switch read[0] {
case "txForceSuccess":
f.txForceSuccess[strings.ToLower(read[1])] = true
count++
break
case "txForceFailed":
f.txForceFailed[strings.ToLower(read[1])] = true
count++
break
}
}
utils.Logger().Debug().Msgf("Using rosetta fix file at `%s`, read %d line", f.fixFile, count)
}
}
func (f *LocalFix) IsForceTxSuccess(txHash string) bool {
return f.txForceSuccess[strings.ToLower(txHash)]
}
func (f *LocalFix) IsForceTxFailed(txHash string) bool {
return f.txForceFailed[strings.ToLower(txHash)]
}