github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/utils/rlpstore/rlpstore.go (about)

     1  package rlpstore
     2  
     3  import (
     4  	"github.com/unicornultrafoundation/go-helios/u2udb"
     5  	"github.com/unicornultrafoundation/go-u2u/logger"
     6  	"github.com/unicornultrafoundation/go-u2u/rlp"
     7  )
     8  
     9  type Helper struct {
    10  	logger.Instance
    11  }
    12  
    13  // Set RLP value
    14  func (s *Helper) Set(table u2udb.Store, key []byte, val interface{}) {
    15  	buf, err := rlp.EncodeToBytes(val)
    16  	if err != nil {
    17  		s.Log.Crit("Failed to encode rlp", "err", err)
    18  	}
    19  
    20  	if err := table.Put(key, buf); err != nil {
    21  		s.Log.Crit("Failed to put key-value", "err", err)
    22  	}
    23  }
    24  
    25  // Get RLP value
    26  func (s *Helper) Get(table u2udb.Store, key []byte, to interface{}) interface{} {
    27  	buf, err := table.Get(key)
    28  	if err != nil {
    29  		s.Log.Crit("Failed to get key-value", "err", err)
    30  	}
    31  	if buf == nil {
    32  		return nil
    33  	}
    34  
    35  	err = rlp.DecodeBytes(buf, to)
    36  	if err != nil {
    37  		s.Log.Crit("Failed to decode rlp", "err", err, "size", len(buf))
    38  	}
    39  	return to
    40  }