group.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. from __future__ import absolute_import
  2. from .api import Request, Response
  3. from .struct import Struct
  4. from .types import Array, Bytes, Int16, Int32, Schema, String
  5. class JoinGroupResponse_v0(Response):
  6. API_KEY = 11
  7. API_VERSION = 0
  8. SCHEMA = Schema(
  9. ('error_code', Int16),
  10. ('generation_id', Int32),
  11. ('group_protocol', String('utf-8')),
  12. ('leader_id', String('utf-8')),
  13. ('member_id', String('utf-8')),
  14. ('members', Array(
  15. ('member_id', String('utf-8')),
  16. ('member_metadata', Bytes)))
  17. )
  18. class JoinGroupResponse_v1(Response):
  19. API_KEY = 11
  20. API_VERSION = 1
  21. SCHEMA = JoinGroupResponse_v0.SCHEMA
  22. class JoinGroupResponse_v2(Response):
  23. API_KEY = 11
  24. API_VERSION = 2
  25. SCHEMA = Schema(
  26. ('throttle_time_ms', Int32),
  27. ('error_code', Int16),
  28. ('generation_id', Int32),
  29. ('group_protocol', String('utf-8')),
  30. ('leader_id', String('utf-8')),
  31. ('member_id', String('utf-8')),
  32. ('members', Array(
  33. ('member_id', String('utf-8')),
  34. ('member_metadata', Bytes)))
  35. )
  36. class JoinGroupRequest_v0(Request):
  37. API_KEY = 11
  38. API_VERSION = 0
  39. RESPONSE_TYPE = JoinGroupResponse_v0
  40. SCHEMA = Schema(
  41. ('group', String('utf-8')),
  42. ('session_timeout', Int32),
  43. ('member_id', String('utf-8')),
  44. ('protocol_type', String('utf-8')),
  45. ('group_protocols', Array(
  46. ('protocol_name', String('utf-8')),
  47. ('protocol_metadata', Bytes)))
  48. )
  49. UNKNOWN_MEMBER_ID = ''
  50. class JoinGroupRequest_v1(Request):
  51. API_KEY = 11
  52. API_VERSION = 1
  53. RESPONSE_TYPE = JoinGroupResponse_v1
  54. SCHEMA = Schema(
  55. ('group', String('utf-8')),
  56. ('session_timeout', Int32),
  57. ('rebalance_timeout', Int32),
  58. ('member_id', String('utf-8')),
  59. ('protocol_type', String('utf-8')),
  60. ('group_protocols', Array(
  61. ('protocol_name', String('utf-8')),
  62. ('protocol_metadata', Bytes)))
  63. )
  64. UNKNOWN_MEMBER_ID = ''
  65. class JoinGroupRequest_v2(Request):
  66. API_KEY = 11
  67. API_VERSION = 2
  68. RESPONSE_TYPE = JoinGroupResponse_v2
  69. SCHEMA = JoinGroupRequest_v1.SCHEMA
  70. UNKNOWN_MEMBER_ID = ''
  71. JoinGroupRequest = [
  72. JoinGroupRequest_v0, JoinGroupRequest_v1, JoinGroupRequest_v2
  73. ]
  74. JoinGroupResponse = [
  75. JoinGroupResponse_v0, JoinGroupResponse_v1, JoinGroupResponse_v1
  76. ]
  77. class ProtocolMetadata(Struct):
  78. SCHEMA = Schema(
  79. ('version', Int16),
  80. ('subscription', Array(String('utf-8'))), # topics list
  81. ('user_data', Bytes)
  82. )
  83. class SyncGroupResponse_v0(Response):
  84. API_KEY = 14
  85. API_VERSION = 0
  86. SCHEMA = Schema(
  87. ('error_code', Int16),
  88. ('member_assignment', Bytes)
  89. )
  90. class SyncGroupResponse_v1(Response):
  91. API_KEY = 14
  92. API_VERSION = 1
  93. SCHEMA = Schema(
  94. ('throttle_time_ms', Int32),
  95. ('error_code', Int16),
  96. ('member_assignment', Bytes)
  97. )
  98. class SyncGroupRequest_v0(Request):
  99. API_KEY = 14
  100. API_VERSION = 0
  101. RESPONSE_TYPE = SyncGroupResponse_v0
  102. SCHEMA = Schema(
  103. ('group', String('utf-8')),
  104. ('generation_id', Int32),
  105. ('member_id', String('utf-8')),
  106. ('group_assignment', Array(
  107. ('member_id', String('utf-8')),
  108. ('member_metadata', Bytes)))
  109. )
  110. class SyncGroupRequest_v1(Request):
  111. API_KEY = 14
  112. API_VERSION = 1
  113. RESPONSE_TYPE = SyncGroupResponse_v1
  114. SCHEMA = SyncGroupRequest_v0.SCHEMA
  115. SyncGroupRequest = [SyncGroupRequest_v0, SyncGroupRequest_v1]
  116. SyncGroupResponse = [SyncGroupResponse_v0, SyncGroupResponse_v1]
  117. class MemberAssignment(Struct):
  118. SCHEMA = Schema(
  119. ('version', Int16),
  120. ('assignment', Array(
  121. ('topic', String('utf-8')),
  122. ('partitions', Array(Int32)))),
  123. ('user_data', Bytes)
  124. )
  125. class HeartbeatResponse_v0(Response):
  126. API_KEY = 12
  127. API_VERSION = 0
  128. SCHEMA = Schema(
  129. ('error_code', Int16)
  130. )
  131. class HeartbeatResponse_v1(Response):
  132. API_KEY = 12
  133. API_VERSION = 1
  134. SCHEMA = Schema(
  135. ('throttle_time_ms', Int32),
  136. ('error_code', Int16)
  137. )
  138. class HeartbeatRequest_v0(Request):
  139. API_KEY = 12
  140. API_VERSION = 0
  141. RESPONSE_TYPE = HeartbeatResponse_v0
  142. SCHEMA = Schema(
  143. ('group', String('utf-8')),
  144. ('generation_id', Int32),
  145. ('member_id', String('utf-8'))
  146. )
  147. class HeartbeatRequest_v1(Request):
  148. API_KEY = 12
  149. API_VERSION = 1
  150. RESPONSE_TYPE = HeartbeatResponse_v1
  151. SCHEMA = HeartbeatRequest_v0
  152. HeartbeatRequest = [HeartbeatRequest_v0, HeartbeatRequest_v1]
  153. HeartbeatResponse = [HeartbeatResponse_v0, HeartbeatResponse_v1]
  154. class LeaveGroupResponse_v0(Response):
  155. API_KEY = 13
  156. API_VERSION = 0
  157. SCHEMA = Schema(
  158. ('error_code', Int16)
  159. )
  160. class LeaveGroupResponse_v1(Response):
  161. API_KEY = 13
  162. API_VERSION = 1
  163. SCHEMA = Schema(
  164. ('throttle_time_ms', Int32),
  165. ('error_code', Int16)
  166. )
  167. class LeaveGroupRequest_v0(Request):
  168. API_KEY = 13
  169. API_VERSION = 0
  170. RESPONSE_TYPE = LeaveGroupResponse_v0
  171. SCHEMA = Schema(
  172. ('group', String('utf-8')),
  173. ('member_id', String('utf-8'))
  174. )
  175. class LeaveGroupRequest_v1(Request):
  176. API_KEY = 13
  177. API_VERSION = 1
  178. RESPONSE_TYPE = LeaveGroupResponse_v1
  179. SCHEMA = LeaveGroupRequest_v0.SCHEMA
  180. LeaveGroupRequest = [LeaveGroupRequest_v0, LeaveGroupRequest_v1]
  181. LeaveGroupResponse = [LeaveGroupResponse_v0, LeaveGroupResponse_v1]