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  }