job.go 666 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package utl
  2. // Job interface
  3. type IJob interface {
  4. Exec(interface{}) error
  5. }
  6. // Job in function style.
  7. // It also implements the IJob interface.
  8. type IJobFn func(interface{}) error
  9. func (fn IJobFn) Exec(inf interface{}) error {
  10. return fn(inf)
  11. }
  12. // Type of chan of Jobs
  13. type TJobChan chan *Job
  14. // Chan of Job chan
  15. type TJobPool chan TJobChan
  16. // Job object
  17. // composed with a job interface and its parameters
  18. type Job struct {
  19. param interface{}
  20. job IJob
  21. }
  22. // Job constructor
  23. func NewJob(job IJob, param interface{}) *Job {
  24. return &Job{
  25. param: param,
  26. job: job,
  27. }
  28. }
  29. // Job executor
  30. func (self *Job) Do() error {
  31. return self.job.Exec(self.param)
  32. }