github.com/TrueBlocks/trueblocks-core/src/apps/chifra@v0.0.0-20241022031540-b362680128f7/pkg/articulate/cache.go (about) 1 package articulate 2 3 import ( 4 "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/abi" 5 "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/logger" 6 "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/rpc" 7 ) 8 9 type AbiCache struct { 10 Conn *rpc.Connection 11 Chain string 12 AbiMap abi.SelectorSyncMap 13 loadedMap abi.AddressSyncMap 14 skipMap abi.AddressSyncMap 15 } 16 17 func NewAbiCache(conn *rpc.Connection, loadKnown bool) *AbiCache { 18 ret := &AbiCache{ 19 Conn: conn, 20 Chain: conn.Chain, 21 AbiMap: abi.SelectorSyncMap{}, 22 loadedMap: abi.AddressSyncMap{}, 23 skipMap: abi.AddressSyncMap{}, 24 } 25 26 if loadKnown { 27 if err := ret.AbiMap.LoadKnownAbis(conn.Chain); err != nil { 28 // report error, but continue processing 29 logger.Error("error preloading known abis", "error", err) 30 } 31 } 32 33 return ret 34 }