github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/acm/validator/cache.go (about)

     1  package validator
     2  
     3  import (
     4  	"math/big"
     5  
     6  	"github.com/hyperledger/burrow/crypto"
     7  )
     8  
     9  // Cache is just a Ring with no memory
    10  type Cache struct {
    11  	*Bucket
    12  }
    13  
    14  func NewCache(backend Iterable) *Cache {
    15  	return &Cache{
    16  		Bucket: NewBucket(backend),
    17  	}
    18  }
    19  
    20  func (vc *Cache) Reset(backend Iterable) {
    21  	vc.Bucket = NewBucket(backend)
    22  }
    23  
    24  func (vc *Cache) Sync(output Writer) error {
    25  	err := vc.Delta.IterateValidators(func(id crypto.Addressable, power *big.Int) error {
    26  		_, err := output.SetPower(id.GetPublicKey(), power)
    27  		return err
    28  	})
    29  	if err != nil {
    30  		return err
    31  	}
    32  	return nil
    33  }