186 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from __future__ import absolute_import
 | |
| 
 | |
| from .api import Request, Response
 | |
| from .message import MessageSet
 | |
| from .types import Array, Int8, Int16, Int32, Int64, Schema, String
 | |
| 
 | |
| 
 | |
| class FetchResponse_v0(Response):
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 0
 | |
|     SCHEMA = Schema(
 | |
|         ('topics', Array(
 | |
|             ('topics', String('utf-8')),
 | |
|             ('partitions', Array(
 | |
|                 ('partition', Int32),
 | |
|                 ('error_code', Int16),
 | |
|                 ('highwater_offset', Int64),
 | |
|                 ('message_set', MessageSet)))))
 | |
|     )
 | |
| 
 | |
| 
 | |
| class FetchResponse_v1(Response):
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 1
 | |
|     SCHEMA = Schema(
 | |
|         ('throttle_time_ms', Int32),
 | |
|         ('topics', Array(
 | |
|             ('topics', String('utf-8')),
 | |
|             ('partitions', Array(
 | |
|                 ('partition', Int32),
 | |
|                 ('error_code', Int16),
 | |
|                 ('highwater_offset', Int64),
 | |
|                 ('message_set', MessageSet)))))
 | |
|     )
 | |
| 
 | |
| 
 | |
| class FetchResponse_v2(Response):
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 2
 | |
|     SCHEMA = FetchResponse_v1.SCHEMA  # message format changed internally
 | |
| 
 | |
| 
 | |
| class FetchResponse_v3(Response):
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 3
 | |
|     SCHEMA = FetchResponse_v2.SCHEMA
 | |
| 
 | |
| 
 | |
| class FetchResponse_v4(Response):
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 4
 | |
|     SCHEMA = Schema(
 | |
|         ('throttle_time_ms', Int32),
 | |
|         ('topics', Array(
 | |
|             ('topics', String('utf-8')),
 | |
|             ('partitions', Array(
 | |
|                 ('partition', Int32),
 | |
|                 ('error_code', Int16),
 | |
|                 ('highwater_offset', Int64),
 | |
|                 ('last_stable_offset', Int64),
 | |
|                 ('aborted_transactions', Array(
 | |
|                     ('producer_id', Int64),
 | |
|                     ('first_offset', Int64))),
 | |
|                 ('message_set', MessageSet)))))
 | |
|     )
 | |
| 
 | |
| 
 | |
| class FetchResponse_v5(Response):
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 5
 | |
|     SCHEMA = Schema(
 | |
|         ('throttle_time_ms', Int32),
 | |
|         ('topics', Array(
 | |
|             ('topics', String('utf-8')),
 | |
|             ('partitions', Array(
 | |
|                 ('partition', Int32),
 | |
|                 ('error_code', Int16),
 | |
|                 ('highwater_offset', Int64),
 | |
|                 ('last_stable_offset', Int64),
 | |
|                 ('log_start_offset', Int64),
 | |
|                 ('aborted_transactions', Array(
 | |
|                     ('producer_id', Int64),
 | |
|                     ('first_offset', Int64))),
 | |
|                 ('message_set', MessageSet)))))
 | |
|     )
 | |
| 
 | |
| 
 | |
| class FetchRequest_v0(Request):
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 0
 | |
|     RESPONSE_TYPE = FetchResponse_v0
 | |
|     SCHEMA = Schema(
 | |
|         ('replica_id', Int32),
 | |
|         ('max_wait_time', Int32),
 | |
|         ('min_bytes', Int32),
 | |
|         ('topics', Array(
 | |
|             ('topic', String('utf-8')),
 | |
|             ('partitions', Array(
 | |
|                 ('partition', Int32),
 | |
|                 ('offset', Int64),
 | |
|                 ('max_bytes', Int32)))))
 | |
|     )
 | |
| 
 | |
| 
 | |
| class FetchRequest_v1(Request):
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 1
 | |
|     RESPONSE_TYPE = FetchResponse_v1
 | |
|     SCHEMA = FetchRequest_v0.SCHEMA
 | |
| 
 | |
| 
 | |
| class FetchRequest_v2(Request):
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 2
 | |
|     RESPONSE_TYPE = FetchResponse_v2
 | |
|     SCHEMA = FetchRequest_v1.SCHEMA
 | |
| 
 | |
| 
 | |
| class FetchRequest_v3(Request):
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 3
 | |
|     RESPONSE_TYPE = FetchResponse_v3
 | |
|     SCHEMA = Schema(
 | |
|         ('replica_id', Int32),
 | |
|         ('max_wait_time', Int32),
 | |
|         ('min_bytes', Int32),
 | |
|         ('max_bytes', Int32),  # This new field is only difference from FR_v2
 | |
|         ('topics', Array(
 | |
|             ('topic', String('utf-8')),
 | |
|             ('partitions', Array(
 | |
|                 ('partition', Int32),
 | |
|                 ('offset', Int64),
 | |
|                 ('max_bytes', Int32)))))
 | |
|     )
 | |
| 
 | |
| 
 | |
| class FetchRequest_v4(Request):
 | |
|     # Adds isolation_level field
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 4
 | |
|     RESPONSE_TYPE = FetchResponse_v4
 | |
|     SCHEMA = Schema(
 | |
|         ('replica_id', Int32),
 | |
|         ('max_wait_time', Int32),
 | |
|         ('min_bytes', Int32),
 | |
|         ('max_bytes', Int32),
 | |
|         ('isolation_level', Int8),
 | |
|         ('topics', Array(
 | |
|             ('topic', String('utf-8')),
 | |
|             ('partitions', Array(
 | |
|                 ('partition', Int32),
 | |
|                 ('offset', Int64),
 | |
|                 ('max_bytes', Int32)))))
 | |
|     )
 | |
| 
 | |
| 
 | |
| class FetchRequest_v5(Request):
 | |
|     # This may only be used in broker-broker api calls
 | |
|     API_KEY = 1
 | |
|     API_VERSION = 5
 | |
|     RESPONSE_TYPE = FetchResponse_v5
 | |
|     SCHEMA = Schema(
 | |
|         ('replica_id', Int32),
 | |
|         ('max_wait_time', Int32),
 | |
|         ('min_bytes', Int32),
 | |
|         ('max_bytes', Int32),
 | |
|         ('isolation_level', Int8),
 | |
|         ('topics', Array(
 | |
|             ('topic', String('utf-8')),
 | |
|             ('partitions', Array(
 | |
|                 ('partition', Int32),
 | |
|                 ('fetch_offset', Int64),
 | |
|                 ('log_start_offset', Int64),
 | |
|                 ('max_bytes', Int32)))))
 | |
|     )
 | |
| 
 | |
| 
 | |
| FetchRequest = [
 | |
|     FetchRequest_v0, FetchRequest_v1, FetchRequest_v2,
 | |
|     FetchRequest_v3, FetchRequest_v4, FetchRequest_v5
 | |
| ]
 | |
| FetchResponse = [
 | |
|     FetchResponse_v0, FetchResponse_v1, FetchResponse_v2,
 | |
|     FetchResponse_v3, FetchResponse_v4, FetchResponse_v5
 | |
| ]
 | 
