Skip to content

Commit

Permalink
vegeta: Helper decoder function
Browse files Browse the repository at this point in the history
  • Loading branch information
tsenart committed Aug 18, 2018
1 parent 54cfcc1 commit 522e600
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions file.go
@@ -1,7 +1,13 @@
package main

import (
"errors"
"fmt"
"io"
"os"
"strings"

vegeta "github.com/tsenart/vegeta/lib"
)

func file(name string, create bool) (*os.File, error) {
Expand All @@ -17,3 +23,40 @@ func file(name string, create bool) (*os.File, error) {
return os.Open(name)
}
}

func decoder(files []string) (vegeta.Decoder, io.Closer, error) {
closer := make(multiCloser, 0, len(files))
decs := make([]vegeta.Decoder, 0, len(files))
for _, f := range files {
rc, err := file(f, false)
if err != nil {
return nil, closer, err
}

dec := vegeta.DecoderFor(rc)
if dec == nil {
return nil, closer, fmt.Errorf("encode: can't detect encoding of %q", f)
}

decs = append(decs, dec)
closer = append(closer, rc)
}
return vegeta.NewRoundRobinDecoder(decs...), closer, nil
}

type multiCloser []io.Closer

func (mc multiCloser) Close() error {
var errs []string
for _, c := range mc {
if err := c.Close(); err != nil {
errs = append(errs, err.Error())
}
}

if len(errs) > 0 {
return errors.New(strings.Join(errs, "; "))
}

return nil
}

0 comments on commit 522e600

Please sign in to comment.