main.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. "dev.hexasoftware.com/x/seq"
  6. "dev.hexasoftware.com/hxs/prettylog"
  7. )
  8. type Xpto struct {
  9. ID string
  10. }
  11. func GenXpto(i int) (*Xpto, error) {
  12. return &Xpto{fmt.Sprintf("ID:%d", i)}, nil
  13. }
  14. func AnotherRandomFunc() error {
  15. return errors.New("I have a error")
  16. }
  17. func NextXpto(id string) error {
  18. return nil
  19. }
  20. func MyFunc() func(...interface{}) error {
  21. s := seq.NewSeq()
  22. return s.Exec
  23. }
  24. func main() {
  25. prettylog.Global()
  26. t := seq.NewTasker()
  27. s := t.Define("RUN")
  28. val := &Xpto{}
  29. s.Add("GenXpto", GenXpto, 10).Grab(&val)
  30. s.Add("NextXpto", func() error { return NextXpto(val.ID) })
  31. s.Add("NextXpto2", func(p *Xpto) error { return NextXpto(p.ID) }, seq.RetFrom(0, 0))
  32. s.Add("Again", NextXpto, seq.ExecParam(0))
  33. t.Exec("RUN", "abc")
  34. s2 := seq.NewSeq()
  35. s2.Add("Generate Xpto",
  36. func(s *seq.Context) error {
  37. xpto, err := GenXpto(10)
  38. s.Set("xpto", xpto)
  39. return err
  40. })
  41. s2.Add("Consume xpto",
  42. func(s *seq.Context) error {
  43. var v *Xpto = s.Get("xpto").(*Xpto)
  44. return NextXpto(v.ID)
  45. })
  46. s2.Exec()
  47. }