forked from yuxh/gearman-go
		
	
						commit
						a6049cf2fd
					
				@ -162,6 +162,26 @@ func (worker *Worker) removeFunc(funcname string) {
 | 
				
			|||||||
    worker.broadcast(job)
 | 
					    worker.broadcast(job)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (worker *Worker) dealJob(job *Job) {
 | 
				
			||||||
 | 
					    defer func() {
 | 
				
			||||||
 | 
					        job.Close()
 | 
				
			||||||
 | 
					        if worker.limit != nil {
 | 
				
			||||||
 | 
					            worker.limit <- true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }()
 | 
				
			||||||
 | 
					    switch job.DataType {
 | 
				
			||||||
 | 
					    case common.ERROR:
 | 
				
			||||||
 | 
					        _, err := common.GetError(job.Data)
 | 
				
			||||||
 | 
					        worker.err(err)
 | 
				
			||||||
 | 
					    case common.JOB_ASSIGN, common.JOB_ASSIGN_UNIQ:
 | 
				
			||||||
 | 
					        if err := worker.exec(job); err != nil {
 | 
				
			||||||
 | 
					            worker.err(err)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    default:
 | 
				
			||||||
 | 
					        worker.handleJob(job)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Main loop
 | 
					// Main loop
 | 
				
			||||||
func (worker *Worker) Work() {
 | 
					func (worker *Worker) Work() {
 | 
				
			||||||
    defer func() {
 | 
					    defer func() {
 | 
				
			||||||
@ -181,20 +201,10 @@ func (worker *Worker) Work() {
 | 
				
			|||||||
    for ok {
 | 
					    for ok {
 | 
				
			||||||
        var job *Job
 | 
					        var job *Job
 | 
				
			||||||
        if job, ok = <-worker.in; ok {
 | 
					        if job, ok = <-worker.in; ok {
 | 
				
			||||||
            go func() {
 | 
					            if worker.limit != nil {
 | 
				
			||||||
                defer job.Close()
 | 
					                <-worker.limit
 | 
				
			||||||
                switch job.DataType {
 | 
					            }
 | 
				
			||||||
                case common.ERROR:
 | 
					            go worker.dealJob(job)
 | 
				
			||||||
                    _, err := common.GetError(job.Data)
 | 
					 | 
				
			||||||
                    worker.err(err)
 | 
					 | 
				
			||||||
                case common.JOB_ASSIGN, common.JOB_ASSIGN_UNIQ:
 | 
					 | 
				
			||||||
                    if err := worker.exec(job); err != nil {
 | 
					 | 
				
			||||||
                        worker.err(err)
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                default:
 | 
					 | 
				
			||||||
                    worker.handleJob(job)
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }()
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -248,12 +258,6 @@ func (worker *Worker) exec(job *Job) (err error) {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    } ()
 | 
					    } ()
 | 
				
			||||||
    if worker.limit != nil {
 | 
					 | 
				
			||||||
        <-worker.limit
 | 
					 | 
				
			||||||
        defer func() {
 | 
					 | 
				
			||||||
            worker.limit <- true
 | 
					 | 
				
			||||||
        }()
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    var limit int
 | 
					    var limit int
 | 
				
			||||||
    if job.DataType == common.JOB_ASSIGN {
 | 
					    if job.DataType == common.JOB_ASSIGN {
 | 
				
			||||||
        limit = 3
 | 
					        limit = 3
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user