// Package async implements job.Handler interface. package async import ( "github.com/armen/dp/job" ) func (jh *JobHandler) init() { jh.buffer = make([]job.Job, 0) } // Submit submits a job to be processed. func (jh *JobHandler) Submit(j job.Job) { jh.mux <- func() { jh.buffer = append(jh.buffer, j) go jh.confirm(j) go jh.handleJob() } } func (jh *JobHandler) handleJob() { jh.mux <- func() { // Select a job j := jh.buffer[0] jh.process(j) jh.buffer = jh.buffer[1:] } }