|
- package main
-
- import (
- "gearman"
- "fmt"
- "log"
- "os"
- "strings"
- )
-
- func ToUpper(job *gearman.WorkerJob) ([]byte, os.Error) {
- data := []byte(strings.ToUpper(string(job.Data)))
- return data, nil
- }
-
- func main() {
- worker := gearman.NewWorker()
- worker.AddServer("127.0.0.1:4730")
- worker.AddFunction("ToUpper", ToUpper, 0)
- worker.AddFunction("ToUpperTimeOut5", ToUpper, 5)
-
- go func() {
- log.Println("start worker")
- for {
- print("cmd: ")
- var str string
- fmt.Scan(&str)
- switch str {
- case "echo":
- worker.Echo([]byte("Hello world!"))
- var job *gearman.WorkerJob
- for job = <-worker.JobQueue; job.DataType != gearman.ECHO_RES; job = <-worker.JobQueue {
- log.Println(job)
- }
- log.Println(string(job.Data))
- case "quit":
- worker.Close()
- return
- case "result":
- job := <-worker.JobQueue
- log.Println(string(job.Data))
- default:
- log.Println("Unknown command")
- }
- }
- }()
- worker.Work()
- }
|