job.go 458 B

123456789101112131415161718192021222324252627282930313233
  1. package wkrp
  2. /**
  3. A job should be callable
  4. so there may be 2 types of jobs at least
  5. */
  6. type IJob interface {
  7. Exec(interface{}) error
  8. }
  9. type IJobFn func(interface{}) error
  10. func (fn IJobFn) Exec(inf interface{}) error {
  11. return fn(inf)
  12. }
  13. type Job struct {
  14. param interface{}
  15. job IJob
  16. }
  17. func NewJob(job IJob, param interface{}) *Job {
  18. return &Job{
  19. param: param,
  20. job: job,
  21. }
  22. }
  23. func (self *Job) do() error {
  24. return self.job.Exec(self.param)
  25. }