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.
 
 
 

81 lines
1.7 KiB

  1. package main
  2. import (
  3. "github.com/mikespook/gearman-go/client"
  4. "log"
  5. "os"
  6. "sync"
  7. )
  8. func main() {
  9. // Set the autoinc id generator
  10. // You can write your own id generator
  11. // by implementing IdGenerator interface.
  12. // client.IdGen = client.NewAutoIncId()
  13. c, err := client.New(client.Network, "127.0.0.1:4730")
  14. if err != nil {
  15. log.Fatalln(err)
  16. }
  17. defer c.Close()
  18. c.ErrorHandler = func(e error) {
  19. log.Println(e)
  20. os.Exit(1)
  21. }
  22. echo := []byte("Hello\x00 world")
  23. echomsg, err := c.Echo(echo)
  24. if err != nil {
  25. log.Fatalln(err)
  26. }
  27. log.Println(string(echomsg))
  28. jobHandler := func(resp *client.Response) {
  29. switch resp.DataType {
  30. case client.WorkException:
  31. fallthrough
  32. case client.WorkFail:
  33. fallthrough
  34. case client.WorkComplate:
  35. if data, err := resp.Result(); err == nil {
  36. log.Printf("RESULT: %v\n", data)
  37. } else {
  38. log.Printf("RESULT: %s\n", err)
  39. }
  40. case client.WorkWarning:
  41. fallthrough
  42. case client.WorkData:
  43. if data, err := resp.Update(); err == nil {
  44. log.Printf("UPDATE: %v\n", data)
  45. } else {
  46. log.Printf("UPDATE: %v, %s\n", data, err)
  47. }
  48. case client.WorkStatus:
  49. if data, err := resp.Status(); err == nil {
  50. log.Printf("STATUS: %v\n", data)
  51. } else {
  52. log.Printf("STATUS: %s\n", err)
  53. }
  54. default:
  55. log.Printf("UNKNOWN: %v", resp.Data)
  56. }
  57. }
  58. handle, err := c.Do("ToUpper", echo, client.JobNormal, jobHandler)
  59. if err != nil {
  60. log.Fatalln(err)
  61. }
  62. status, err := c.Status(handle)
  63. if err != nil {
  64. log.Fatalln(err)
  65. }
  66. log.Printf("%v", *status)
  67. _, err = c.Do("Foobar", echo, client.JobNormal, jobHandler)
  68. if err != nil {
  69. log.Fatalln(err)
  70. }
  71. log.Println("Press Ctrl-C to exit ...")
  72. var mutex sync.Mutex
  73. mutex.Lock()
  74. mutex.Lock()
  75. }