influxdb/pkg/csv2lp/multi_closer.go

34 lines
628 B
Go

package csv2lp
import (
"io"
"log"
)
// multicloser
type multiCloser struct {
closers []io.Closer
}
// Close implements io.Closer to closes all nested closers and logs a warning on error
func (mc *multiCloser) Close() error {
var err error
for i := 0; i < len(mc.closers); i++ {
e := mc.closers[i].Close()
if e != nil {
if err == nil {
err = e
}
log.Println(err)
}
}
return err
}
//MultiCloser creates am io.Closer that silently closes supplied io.Closer instances
func MultiCloser(closers ...io.Closer) io.Closer {
c := make([]io.Closer, len(closers))
copy(c, closers)
return &multiCloser{c}
}