m2m模型翻译
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.

194 lines
4.6 KiB

6 months ago
  1. from __future__ import absolute_import
  2. from kafka.protocol.api import Request, Response
  3. from kafka.protocol.types import Array, Int8, Int16, Int32, Int64, Schema, String
  4. UNKNOWN_OFFSET = -1
  5. class OffsetResetStrategy(object):
  6. LATEST = -1
  7. EARLIEST = -2
  8. NONE = 0
  9. class OffsetResponse_v0(Response):
  10. API_KEY = 2
  11. API_VERSION = 0
  12. SCHEMA = Schema(
  13. ('topics', Array(
  14. ('topic', String('utf-8')),
  15. ('partitions', Array(
  16. ('partition', Int32),
  17. ('error_code', Int16),
  18. ('offsets', Array(Int64))))))
  19. )
  20. class OffsetResponse_v1(Response):
  21. API_KEY = 2
  22. API_VERSION = 1
  23. SCHEMA = Schema(
  24. ('topics', Array(
  25. ('topic', String('utf-8')),
  26. ('partitions', Array(
  27. ('partition', Int32),
  28. ('error_code', Int16),
  29. ('timestamp', Int64),
  30. ('offset', Int64)))))
  31. )
  32. class OffsetResponse_v2(Response):
  33. API_KEY = 2
  34. API_VERSION = 2
  35. SCHEMA = Schema(
  36. ('throttle_time_ms', Int32),
  37. ('topics', Array(
  38. ('topic', String('utf-8')),
  39. ('partitions', Array(
  40. ('partition', Int32),
  41. ('error_code', Int16),
  42. ('timestamp', Int64),
  43. ('offset', Int64)))))
  44. )
  45. class OffsetResponse_v3(Response):
  46. """
  47. on quota violation, brokers send out responses before throttling
  48. """
  49. API_KEY = 2
  50. API_VERSION = 3
  51. SCHEMA = OffsetResponse_v2.SCHEMA
  52. class OffsetResponse_v4(Response):
  53. """
  54. Add leader_epoch to response
  55. """
  56. API_KEY = 2
  57. API_VERSION = 4
  58. SCHEMA = Schema(
  59. ('throttle_time_ms', Int32),
  60. ('topics', Array(
  61. ('topic', String('utf-8')),
  62. ('partitions', Array(
  63. ('partition', Int32),
  64. ('error_code', Int16),
  65. ('timestamp', Int64),
  66. ('offset', Int64),
  67. ('leader_epoch', Int32)))))
  68. )
  69. class OffsetResponse_v5(Response):
  70. """
  71. adds a new error code, OFFSET_NOT_AVAILABLE
  72. """
  73. API_KEY = 2
  74. API_VERSION = 5
  75. SCHEMA = OffsetResponse_v4.SCHEMA
  76. class OffsetRequest_v0(Request):
  77. API_KEY = 2
  78. API_VERSION = 0
  79. RESPONSE_TYPE = OffsetResponse_v0
  80. SCHEMA = Schema(
  81. ('replica_id', Int32),
  82. ('topics', Array(
  83. ('topic', String('utf-8')),
  84. ('partitions', Array(
  85. ('partition', Int32),
  86. ('timestamp', Int64),
  87. ('max_offsets', Int32)))))
  88. )
  89. DEFAULTS = {
  90. 'replica_id': -1
  91. }
  92. class OffsetRequest_v1(Request):
  93. API_KEY = 2
  94. API_VERSION = 1
  95. RESPONSE_TYPE = OffsetResponse_v1
  96. SCHEMA = Schema(
  97. ('replica_id', Int32),
  98. ('topics', Array(
  99. ('topic', String('utf-8')),
  100. ('partitions', Array(
  101. ('partition', Int32),
  102. ('timestamp', Int64)))))
  103. )
  104. DEFAULTS = {
  105. 'replica_id': -1
  106. }
  107. class OffsetRequest_v2(Request):
  108. API_KEY = 2
  109. API_VERSION = 2
  110. RESPONSE_TYPE = OffsetResponse_v2
  111. SCHEMA = Schema(
  112. ('replica_id', Int32),
  113. ('isolation_level', Int8), # <- added isolation_level
  114. ('topics', Array(
  115. ('topic', String('utf-8')),
  116. ('partitions', Array(
  117. ('partition', Int32),
  118. ('timestamp', Int64)))))
  119. )
  120. DEFAULTS = {
  121. 'replica_id': -1
  122. }
  123. class OffsetRequest_v3(Request):
  124. API_KEY = 2
  125. API_VERSION = 3
  126. RESPONSE_TYPE = OffsetResponse_v3
  127. SCHEMA = OffsetRequest_v2.SCHEMA
  128. DEFAULTS = {
  129. 'replica_id': -1
  130. }
  131. class OffsetRequest_v4(Request):
  132. """
  133. Add current_leader_epoch to request
  134. """
  135. API_KEY = 2
  136. API_VERSION = 4
  137. RESPONSE_TYPE = OffsetResponse_v4
  138. SCHEMA = Schema(
  139. ('replica_id', Int32),
  140. ('isolation_level', Int8), # <- added isolation_level
  141. ('topics', Array(
  142. ('topic', String('utf-8')),
  143. ('partitions', Array(
  144. ('partition', Int32),
  145. ('current_leader_epoch', Int64),
  146. ('timestamp', Int64)))))
  147. )
  148. DEFAULTS = {
  149. 'replica_id': -1
  150. }
  151. class OffsetRequest_v5(Request):
  152. API_KEY = 2
  153. API_VERSION = 5
  154. RESPONSE_TYPE = OffsetResponse_v5
  155. SCHEMA = OffsetRequest_v4.SCHEMA
  156. DEFAULTS = {
  157. 'replica_id': -1
  158. }
  159. OffsetRequest = [
  160. OffsetRequest_v0, OffsetRequest_v1, OffsetRequest_v2,
  161. OffsetRequest_v3, OffsetRequest_v4, OffsetRequest_v5,
  162. ]
  163. OffsetResponse = [
  164. OffsetResponse_v0, OffsetResponse_v1, OffsetResponse_v2,
  165. OffsetResponse_v3, OffsetResponse_v4, OffsetResponse_v5,
  166. ]