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.
 
 
 

79 lines
1.7 KiB

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