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.

client.go 1.7 KiB

10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package main
  2. import (
  3. "github.com/mikespook/gearman-go/client"
  4. "log"
  5. "sync"
  6. "os"
  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. }