Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

11 роки тому
11 роки тому
11 роки тому
11 роки тому
11 роки тому
11 роки тому
11 роки тому
10 роки тому
11 роки тому
10 роки тому
11 роки тому
123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package client
  2. import (
  3. "encoding/binary"
  4. )
  5. // Request from client
  6. type request struct {
  7. DataType uint32
  8. Data []byte
  9. }
  10. // Encode a Request to byte slice
  11. func (req *request) Encode() (data []byte) {
  12. l := len(req.Data) // length of data
  13. tl := l + minPacketLength // add 12 bytes head
  14. data = getBuffer(tl)
  15. copy(data[:4], reqStr)
  16. binary.BigEndian.PutUint32(data[4:8], req.DataType)
  17. binary.BigEndian.PutUint32(data[8:12], uint32(l))
  18. copy(data[minPacketLength:], req.Data)
  19. return
  20. }
  21. func getRequest() (req *request) {
  22. // TODO add a pool
  23. req = &request{}
  24. return
  25. }
  26. func getJob(id string, funcname, data []byte) (req *request) {
  27. req = getRequest()
  28. a := len(funcname)
  29. b := len(id)
  30. c := len(data)
  31. l := a + b + c + 2
  32. req.Data = getBuffer(l)
  33. copy(req.Data[0:a], funcname)
  34. copy(req.Data[a+1:a+b+1], []byte(id))
  35. copy(req.Data[a+b+2:], data)
  36. return
  37. }