join_group_response.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package sarama
  2. type JoinGroupResponse struct {
  3. Err KError
  4. GenerationId int32
  5. GroupProtocol string
  6. LeaderId string
  7. MemberId string
  8. Members map[string][]byte
  9. }
  10. func (r *JoinGroupResponse) encode(pe packetEncoder) error {
  11. pe.putInt16(int16(r.Err))
  12. pe.putInt32(r.GenerationId)
  13. if err := pe.putString(r.GroupProtocol); err != nil {
  14. return err
  15. }
  16. if err := pe.putString(r.LeaderId); err != nil {
  17. return err
  18. }
  19. if err := pe.putString(r.MemberId); err != nil {
  20. return err
  21. }
  22. if err := pe.putArrayLength(len(r.Members)); err != nil {
  23. return err
  24. }
  25. for memberId, memberMetadata := range r.Members {
  26. if err := pe.putString(memberId); err != nil {
  27. return err
  28. }
  29. if err := pe.putBytes(memberMetadata); err != nil {
  30. return err
  31. }
  32. }
  33. return nil
  34. }
  35. func (r *JoinGroupResponse) decode(pd packetDecoder) (err error) {
  36. if kerr, err := pd.getInt16(); err != nil {
  37. return err
  38. } else {
  39. r.Err = KError(kerr)
  40. }
  41. if r.GenerationId, err = pd.getInt32(); err != nil {
  42. return
  43. }
  44. if r.GroupProtocol, err = pd.getString(); err != nil {
  45. return
  46. }
  47. if r.LeaderId, err = pd.getString(); err != nil {
  48. return
  49. }
  50. if r.MemberId, err = pd.getString(); err != nil {
  51. return
  52. }
  53. n, err := pd.getArrayLength()
  54. if err != nil {
  55. return err
  56. }
  57. if n == 0 {
  58. return nil
  59. }
  60. r.Members = make(map[string][]byte)
  61. for i := 0; i < n; i++ {
  62. memberId, err := pd.getString()
  63. if err != nil {
  64. return err
  65. }
  66. memberMetadata, err := pd.getBytes()
  67. if err != nil {
  68. return err
  69. }
  70. r.Members[memberId] = memberMetadata
  71. }
  72. return nil
  73. }