offset.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. from __future__ import absolute_import
  2. from .api import Request, Response
  3. from .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 OffsetRequest_v0(Request):
  46. API_KEY = 2
  47. API_VERSION = 0
  48. RESPONSE_TYPE = OffsetResponse_v0
  49. SCHEMA = Schema(
  50. ('replica_id', Int32),
  51. ('topics', Array(
  52. ('topic', String('utf-8')),
  53. ('partitions', Array(
  54. ('partition', Int32),
  55. ('timestamp', Int64),
  56. ('max_offsets', Int32)))))
  57. )
  58. DEFAULTS = {
  59. 'replica_id': -1
  60. }
  61. class OffsetRequest_v1(Request):
  62. API_KEY = 2
  63. API_VERSION = 1
  64. RESPONSE_TYPE = OffsetResponse_v1
  65. SCHEMA = Schema(
  66. ('replica_id', Int32),
  67. ('topics', Array(
  68. ('topic', String('utf-8')),
  69. ('partitions', Array(
  70. ('partition', Int32),
  71. ('timestamp', Int64)))))
  72. )
  73. DEFAULTS = {
  74. 'replica_id': -1
  75. }
  76. class OffsetRequest_v2(Request):
  77. API_KEY = 2
  78. API_VERSION = 2
  79. RESPONSE_TYPE = OffsetResponse_v2
  80. SCHEMA = Schema(
  81. ('replica_id', Int32),
  82. ('isolation_level', Int8), # <- added isolation_level
  83. ('topics', Array(
  84. ('topic', String('utf-8')),
  85. ('partitions', Array(
  86. ('partition', Int32),
  87. ('timestamp', Int64)))))
  88. )
  89. DEFAULTS = {
  90. 'replica_id': -1
  91. }
  92. OffsetRequest = [OffsetRequest_v0, OffsetRequest_v1, OffsetRequest_v2]
  93. OffsetResponse = [OffsetResponse_v0, OffsetResponse_v1, OffsetResponse_v2]