github.com/kisexp/xdchain@v0.0.0-20211206025815-490d6b732aa7/consensus/istanbul/qbft/engine/apply_extra.go (about)

     1  package qbftengine
     2  
     3  import "github.com/kisexp/xdchain/core/types"
     4  
     5  type ApplyQBFTExtra func(*types.QBFTExtra) error
     6  
     7  func Combine(applies ...ApplyQBFTExtra) ApplyQBFTExtra {
     8  	return func(extra *types.QBFTExtra) error {
     9  		for _, apply := range applies {
    10  			err := apply(extra)
    11  			if err != nil {
    12  				return err
    13  			}
    14  		}
    15  		return nil
    16  	}
    17  }
    18  
    19  func ApplyHeaderQBFTExtra(header *types.Header, applies ...ApplyQBFTExtra) error {
    20  	extra, err := getExtra(header)
    21  	if err != nil {
    22  		return err
    23  	}
    24  
    25  	err = Combine(applies...)(extra)
    26  	if err != nil {
    27  		return err
    28  	}
    29  
    30  	return setExtra(header, extra)
    31  }