diff options
-rw-r--r-- | manager.go | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -46,6 +46,10 @@ type Work struct { err error } +func (w *Work) Error() error { + return w.err +} + func (i *StdinInput) Start() chan *Work { i.retchan = make(chan *Work, 100) r := bufio.NewReader(os.Stdin) @@ -68,6 +72,10 @@ func (i *StdinInput) Start() chan *Work { return i.retchan } +func NewStringFilter(ffmap map[string]func(string) string) *StringFilter { + return &StringFilter{FilterFuncMap: ffmap} +} + func (f *StringFilter) Filter(w *Work) *Work { dec := json.NewDecoder(bytes.NewReader(w.data)) jm := make(map[string]string, 10) @@ -119,6 +127,10 @@ func (m *Manager) Run() { go func(w *Work) { nw := m.Filter.Filter(w) + err := nw.Error() + if err != nil { + fmt.Printf("Got an error when processing Work: %q\n", err) + } m.Output.Output(nw) wg.Done() @@ -134,7 +146,7 @@ func main() { m := Manager{ Input: &StdinInput{}, - Filter: &StringFilter{FilterFuncMap: ffmap}, + Filter: NewStringFilter(ffmap), Output: &StdoutOutput{}, } |