github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/u2u/genesisstore/readersmap/reader_map.go (about)

     1  package readersmap
     2  
     3  import (
     4  	"errors"
     5  	"io"
     6  )
     7  
     8  type Map map[string]io.Reader
     9  
    10  type Unit struct {
    11  	Name string
    12  	io.Reader
    13  }
    14  
    15  var (
    16  	ErrNotFound = errors.New("not found")
    17  	ErrDupFile  = errors.New("unit name is duplicated")
    18  )
    19  
    20  func Wrap(rr []Unit) (Map, error) {
    21  	units := make(Map)
    22  	for _, r := range rr {
    23  		if units[r.Name] != nil {
    24  			return nil, ErrDupFile
    25  		}
    26  		units[r.Name] = r.Reader
    27  	}
    28  	return units, nil
    29  }
    30  
    31  func (mm Map) Open(name string) (io.Reader, error) {
    32  	f := mm[name]
    33  	if f == nil {
    34  		return nil, ErrNotFound
    35  	}
    36  	return f, nil
    37  }