| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- package utl
- // Job interface
- type IJob interface {
- Exec(interface{}) error
- }
- // Job in function style.
- // It also implements the IJob interface.
- type IJobFn func(interface{}) error
- func (fn IJobFn) Exec(inf interface{}) error {
- return fn(inf)
- }
- // Type of chan of Jobs
- type TJobChan chan *Job
- // Chan of Job chan
- type TJobPool chan TJobChan
- // Job object
- // composed with a job interface and its parameters
- type Job struct {
- param interface{}
- job IJob
- }
- // Job constructor
- func NewJob(job IJob, param interface{}) *Job {
- return &Job{
- param: param,
- job: job,
- }
- }
- // Job executor
- func (self *Job) Do() error {
- return self.job.Exec(self.param)
- }
|