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 }