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 }