diff options
| author | Silvan Jegen <s.jegen@gmail.com> | 2017-02-22 20:09:37 +0100 | 
|---|---|---|
| committer | Silvan Jegen <s.jegen@gmail.com> | 2017-02-22 20:09:37 +0100 | 
| commit | f4bf90739049b7d0c19c79b2285be0f61b2e2156 (patch) | |
| tree | 48ee0d669a8fb41560ebc9de97940a1586d09aa6 /stasherpresent.slide | |
| parent | 68c3940d1e49ac3cacab997a125f185216e80627 (diff) | |
Update code
We also remove a less important slide.
Diffstat (limited to 'stasherpresent.slide')
| -rw-r--r-- | stasherpresent.slide | 120 | 
1 files changed, 50 insertions, 70 deletions
| diff --git a/stasherpresent.slide b/stasherpresent.slide index f9e7aba..1d99181 100644 --- a/stasherpresent.slide +++ b/stasherpresent.slide @@ -96,9 +96,11 @@ Code available at  * Implementation -1. Interfaces -2. Manager -3. Especially unfinished stuff: error handling, config parser and the Registry +- Interfaces +- Manager +- Error handling +- Config parser +- Registry  * Interfaces @@ -134,64 +136,60 @@ manager/manager.go  * Manager  	func (m *Manager) Run() { -	        var wg sync.WaitGroup -	        ic := m.Input.Start() -	        for w := range ic { -	                if w.Error() != nil { -	                        fmt.Printf("Got an error when getting Work input: %q\n", w.Error()) -	                        continue -	                } -	                wg.Add(1) -	                go func(w *work.Work) { -	                        nw := m.Filter.Filter(w) -	                        err := nw.Error() -	                        if err != nil { -	                                fmt.Printf("Got an error when filtering Work: %q\n", err) -	                        } -	                        err = m.Output.Output(nw) -	                        if err != nil { -	                                fmt.Printf("Got an error when outputting Work: %q\n", err) -	                        } -	                        wg.Done() -	                }(w) -	        } -	        wg.Wait() +		var wg sync.WaitGroup +		ic := m.Input.Start() +		for w := range ic { +			if w.Error() != nil { +				fmt.Printf("Got an error when getting Work input: %q\n", w.Error()) +				continue +			} +			wg.Add(1) +			go func(w *work.Work) { +				defer wg.Done() +				nw := m.Filter.Filter(w) +				err := nw.Error() +				if err != nil { +					fmt.Printf("Got an error when filtering Work: %q\n", err) +					return +				} +				err = m.Output.Output(nw) +				if err != nil { +					fmt.Printf("Got an error when outputting Work: %q\n", err) +				} +			}(w) +		} +		wg.Wait()  	} -* Main advantages over shell script - -- Error handling -- Declarative config - -  * Error handling -        for w := range ic { -                if w.Error() != nil { -                        fmt.Printf("Got an error when getting Work input: %q\n", w.Error()) -                        continue -                } -                wg.Add(1) -                go func(w *work.Work) { -                        nw := m.Filter.Filter(w) -                        err := nw.Error() -                        if err != nil { -                                fmt.Printf("Got an error when filtering Work: %q\n", err) -                        } -                        err = m.Output.Output(nw) -                        if err != nil { -                                fmt.Printf("Got an error when outputting Work: %q\n", err) -                        } -                        wg.Done() -                }(w) -        } +	for w := range ic { +		if w.Error() != nil { +			fmt.Printf("Got an error when getting Work input: %q\n", w.Error()) +			continue +		} +		wg.Add(1) +		go func(w *work.Work) { +			defer wg.Done() +			nw := m.Filter.Filter(w) +			err := nw.Error() +			if err != nil { +				fmt.Printf("Got an error when filtering Work: %q\n", err) +				return +			} +			err = m.Output.Output(nw) +			if err != nil { +				fmt.Printf("Got an error when outputting Work: %q\n", err) +			} +		}(w) +	}  * Config parser -- Currently only supports string literals (no arrays)  - Hand-written parser +- Currently only supports string literals (no arrays)  - Uses the Registry to get the modules @@ -215,24 +213,6 @@ input/http/http.go  	} -* Registry - -conf/init.go - -	import ( -	        // Initialize the different modules. By importing them in this -	        // way, their constructors are registered in the registry. -	        _ "github.com/Shugyousha/stasher/input/http" -	        _ "github.com/Shugyousha/stasher/input/stdin" - -	        _ "github.com/Shugyousha/stasher/filter/http" -	        _ "github.com/Shugyousha/stasher/filter/str" - -	        _ "github.com/Shugyousha/stasher/output/http" -	        _ "github.com/Shugyousha/stasher/output/stdout" -	) - -  * Implemented modules  - input: stdin, http @@ -255,5 +235,5 @@ conf/init.go  - Generality and error handling  - Use HTTP for everything?  - Level of "declarativeness" in the configuration -- Still better off with shell scripts? +- Still better off with shell scripts and pipes? | 
