You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

49 lines
1.2 KiB

  1. package main
  2. import (
  3. "gearman"
  4. "fmt"
  5. "log"
  6. "os"
  7. "strings"
  8. )
  9. func ToUpper(job *gearman.WorkerJob) ([]byte, os.Error) {
  10. data := []byte(strings.ToUpper(string(job.Data)))
  11. return data, nil
  12. }
  13. func main() {
  14. worker := gearman.NewWorker()
  15. worker.AddServer("127.0.0.1:4730")
  16. worker.AddFunction("ToUpper", ToUpper, 0)
  17. worker.AddFunction("ToUpperTimeOut5", ToUpper, 5)
  18. go func() {
  19. log.Println("start worker")
  20. for {
  21. print("cmd: ")
  22. var str string
  23. fmt.Scan(&str)
  24. switch str {
  25. case "echo":
  26. worker.Echo([]byte("Hello world!"))
  27. var job *gearman.WorkerJob
  28. for job = <-worker.JobQueue; job.DataType != gearman.ECHO_RES; job = <-worker.JobQueue {
  29. log.Println(job)
  30. }
  31. log.Println(string(job.Data))
  32. case "quit":
  33. worker.Close()
  34. return
  35. case "result":
  36. job := <-worker.JobQueue
  37. log.Println(string(job.Data))
  38. default:
  39. log.Println("Unknown command")
  40. }
  41. }
  42. }()
  43. worker.Work()
  44. }