forked from yuxh/gearman-go
		
	The limitation param was removed
This commit is contained in:
		
							parent
							
								
									ae716c0494
								
							
						
					
					
						commit
						fbfe7c0b22
					
				@ -12,9 +12,6 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	Unlimited = 0
 | 
					 | 
				
			||||||
	OneByOne  = 1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Immediately = 0
 | 
						Immediately = 0
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -22,7 +19,7 @@ const (
 | 
				
			|||||||
Worker side api for gearman
 | 
					Worker side api for gearman
 | 
				
			||||||
 | 
					
 | 
				
			||||||
usage:
 | 
					usage:
 | 
				
			||||||
w = worker.New(worker.Unlimited)
 | 
					w = worker.New()
 | 
				
			||||||
w.AddFunction("foobar", foobar)
 | 
					w.AddFunction("foobar", foobar)
 | 
				
			||||||
w.AddServer("127.0.0.1:4730")
 | 
					w.AddServer("127.0.0.1:4730")
 | 
				
			||||||
w.Work() // Enter the worker's main loop
 | 
					w.Work() // Enter the worker's main loop
 | 
				
			||||||
@ -37,11 +34,10 @@ func foobar(job *Job) (data []byte, err os.Error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
type Worker struct {
 | 
					type Worker struct {
 | 
				
			||||||
	agents  map[string]*agent
 | 
						agents  []*agent
 | 
				
			||||||
	funcs   JobFuncs
 | 
						funcs   JobFuncs
 | 
				
			||||||
	in      chan *inPack
 | 
						in      chan *inPack
 | 
				
			||||||
	running bool
 | 
						running bool
 | 
				
			||||||
	limit   chan bool
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Id string
 | 
						Id string
 | 
				
			||||||
	// assign a ErrFunc to handle errors
 | 
						// assign a ErrFunc to handle errors
 | 
				
			||||||
@ -51,15 +47,12 @@ type Worker struct {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Get a new worker
 | 
					// Get a new worker
 | 
				
			||||||
func New(l int) (worker *Worker) {
 | 
					func New() (worker *Worker) {
 | 
				
			||||||
	worker = &Worker{
 | 
						worker = &Worker{
 | 
				
			||||||
		agents: make(map[string]*agent, QUEUE_SIZE),
 | 
							agents: make([]*agent, 0),
 | 
				
			||||||
		funcs:  make(JobFuncs),
 | 
							funcs:  make(JobFuncs),
 | 
				
			||||||
		in:     make(chan *inPack, QUEUE_SIZE),
 | 
							in:     make(chan *inPack, QUEUE_SIZE),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if l != Unlimited {
 | 
					 | 
				
			||||||
		worker.limit = make(chan bool, l)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -78,7 +71,7 @@ func (worker *Worker) AddServer(net, addr string) (err error) {
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	worker.agents[net+addr] = a
 | 
						worker.agents = append(worker.agents, a)
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -148,11 +141,6 @@ func (worker *Worker) removeFunc(funcname string) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (worker *Worker) handleInPack(inpack *inPack) {
 | 
					func (worker *Worker) handleInPack(inpack *inPack) {
 | 
				
			||||||
	defer func() {
 | 
					 | 
				
			||||||
		if worker.running && worker.limit != nil {
 | 
					 | 
				
			||||||
			<-worker.limit
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
	switch inpack.dataType {
 | 
						switch inpack.dataType {
 | 
				
			||||||
	case NO_JOB:
 | 
						case NO_JOB:
 | 
				
			||||||
		inpack.a.PreSleep()
 | 
							inpack.a.PreSleep()
 | 
				
			||||||
@ -206,9 +194,6 @@ func (worker *Worker) customeHandler(inpack *inPack) {
 | 
				
			|||||||
func (worker *Worker) Close() {
 | 
					func (worker *Worker) Close() {
 | 
				
			||||||
	worker.running = false
 | 
						worker.running = false
 | 
				
			||||||
	close(worker.in)
 | 
						close(worker.in)
 | 
				
			||||||
	if worker.limit != nil {
 | 
					 | 
				
			||||||
		close(worker.limit)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Send a something out, get the samething back.
 | 
					// Send a something out, get the samething back.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user