38 lines
		
	
	
		
			966 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			966 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import (
 | 
						|
    "os"
 | 
						|
    "log"
 | 
						|
    "strings"
 | 
						|
    "bitbucket.org/mikespook/golib/signal"
 | 
						|
    "bitbucket.org/mikespook/gearman-go/worker"
 | 
						|
)
 | 
						|
 | 
						|
func ToUpper(job *worker.Job) ([]byte, error) {
 | 
						|
    log.Printf("Handle=[%s]; UID=[%s], Data=[%s]\n",
 | 
						|
        job.Handle, job.UniqueId, job.Data)
 | 
						|
    data := []byte(strings.ToUpper(string(job.Data)))
 | 
						|
    return data, nil
 | 
						|
}
 | 
						|
 | 
						|
func main() {
 | 
						|
    log.Println("Starting ...")
 | 
						|
    defer log.Println("Shutdown complete!")
 | 
						|
    w := worker.New(worker.Unlimited)
 | 
						|
    w.ErrHandler = func(e error) {
 | 
						|
        log.Println(e)
 | 
						|
    }
 | 
						|
    w.JobHandler = func(job *worker.Job) error {
 | 
						|
        log.Printf("H=%s, UID=%s, Data=%s\n", job.Handle,
 | 
						|
            job.UniqueId, job.Data)
 | 
						|
        return nil
 | 
						|
    }
 | 
						|
    w.AddServer("127.0.0.1:4730")
 | 
						|
    w.AddFunc("ToUpper", ToUpper, 0)
 | 
						|
    //w.AddFunc("ToUpperTimeOut5", ToUpper, 5)
 | 
						|
    go w.Work()
 | 
						|
    sh := signal.NewHandler()
 | 
						|
    sh.Bind(os.Interrupt, func() bool {return true})
 | 
						|
    sh.Loop()
 | 
						|
}
 |