github.com/Tri-stone/burrow@v0.25.0/execution/state/names.go (about)

     1  package state
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/hyperledger/burrow/execution/names"
     7  )
     8  
     9  var _ names.IterableReader = &State{}
    10  
    11  func (s *ReadState) GetName(name string) (*names.Entry, error) {
    12  	tree, err := s.Forest.Reader(keys.Name.Prefix())
    13  	if err != nil {
    14  		return nil, err
    15  	}
    16  	entryBytes := tree.Get(keys.Name.KeyNoPrefix(name))
    17  	if entryBytes == nil {
    18  		return nil, nil
    19  	}
    20  
    21  	return names.DecodeEntry(entryBytes)
    22  }
    23  
    24  func (ws *writeState) UpdateName(entry *names.Entry) error {
    25  	tree, err := ws.forest.Writer(keys.Name.Prefix())
    26  	if err != nil {
    27  		return err
    28  	}
    29  	bs, err := entry.Encode()
    30  	if err != nil {
    31  		return err
    32  	}
    33  	tree.Set(keys.Name.KeyNoPrefix(entry.Name), bs)
    34  	return nil
    35  }
    36  
    37  func (ws *writeState) RemoveName(name string) error {
    38  	tree, err := ws.forest.Writer(keys.Name.Prefix())
    39  	if err != nil {
    40  		return err
    41  	}
    42  	tree.Delete(keys.Name.KeyNoPrefix(name))
    43  	return nil
    44  }
    45  
    46  func (s *ReadState) IterateNames(consumer func(*names.Entry) error) error {
    47  	tree, err := s.Forest.Reader(keys.Name.Prefix())
    48  	if err != nil {
    49  		return err
    50  	}
    51  	return tree.Iterate(nil, nil, true, func(key []byte, value []byte) error {
    52  		entry, err := names.DecodeEntry(value)
    53  		if err != nil {
    54  			return fmt.Errorf("State.IterateNames() could not iterate over names: %v", err)
    55  		}
    56  		return consumer(entry)
    57  	})
    58  }