This commit is contained in:
134
venv/lib/python3.12/site-packages/kafka/protocol/api_versions.py
Normal file
134
venv/lib/python3.12/site-packages/kafka/protocol/api_versions.py
Normal file
@@ -0,0 +1,134 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from io import BytesIO
|
||||
|
||||
from kafka.protocol.api import Request, Response
|
||||
from kafka.protocol.types import Array, CompactArray, CompactString, Int16, Int32, Schema, TaggedFields
|
||||
|
||||
|
||||
class BaseApiVersionsResponse(Response):
|
||||
API_KEY = 18
|
||||
API_VERSION = 0
|
||||
SCHEMA = Schema(
|
||||
('error_code', Int16),
|
||||
('api_versions', Array(
|
||||
('api_key', Int16),
|
||||
('min_version', Int16),
|
||||
('max_version', Int16)))
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def decode(cls, data):
|
||||
if isinstance(data, bytes):
|
||||
data = BytesIO(data)
|
||||
# Check error_code, decode as v0 if any error
|
||||
curr = data.tell()
|
||||
err = Int16.decode(data)
|
||||
data.seek(curr)
|
||||
if err != 0:
|
||||
return ApiVersionsResponse_v0.decode(data)
|
||||
return super(BaseApiVersionsResponse, cls).decode(data)
|
||||
|
||||
|
||||
class ApiVersionsResponse_v0(Response):
|
||||
API_KEY = 18
|
||||
API_VERSION = 0
|
||||
SCHEMA = Schema(
|
||||
('error_code', Int16),
|
||||
('api_versions', Array(
|
||||
('api_key', Int16),
|
||||
('min_version', Int16),
|
||||
('max_version', Int16)))
|
||||
)
|
||||
|
||||
|
||||
class ApiVersionsResponse_v1(BaseApiVersionsResponse):
|
||||
API_KEY = 18
|
||||
API_VERSION = 1
|
||||
SCHEMA = Schema(
|
||||
('error_code', Int16),
|
||||
('api_versions', Array(
|
||||
('api_key', Int16),
|
||||
('min_version', Int16),
|
||||
('max_version', Int16))),
|
||||
('throttle_time_ms', Int32)
|
||||
)
|
||||
|
||||
|
||||
class ApiVersionsResponse_v2(BaseApiVersionsResponse):
|
||||
API_KEY = 18
|
||||
API_VERSION = 2
|
||||
SCHEMA = ApiVersionsResponse_v1.SCHEMA
|
||||
|
||||
|
||||
class ApiVersionsResponse_v3(BaseApiVersionsResponse):
|
||||
API_KEY = 18
|
||||
API_VERSION = 3
|
||||
SCHEMA = Schema(
|
||||
('error_code', Int16),
|
||||
('api_versions', CompactArray(
|
||||
('api_key', Int16),
|
||||
('min_version', Int16),
|
||||
('max_version', Int16),
|
||||
('_tagged_fields', TaggedFields))),
|
||||
('throttle_time_ms', Int32),
|
||||
('_tagged_fields', TaggedFields)
|
||||
)
|
||||
# Note: ApiVersions Response does not send FLEXIBLE_VERSION header!
|
||||
|
||||
|
||||
class ApiVersionsResponse_v4(BaseApiVersionsResponse):
|
||||
API_KEY = 18
|
||||
API_VERSION = 4
|
||||
SCHEMA = ApiVersionsResponse_v3.SCHEMA
|
||||
|
||||
|
||||
class ApiVersionsRequest_v0(Request):
|
||||
API_KEY = 18
|
||||
API_VERSION = 0
|
||||
RESPONSE_TYPE = ApiVersionsResponse_v0
|
||||
SCHEMA = Schema()
|
||||
|
||||
|
||||
class ApiVersionsRequest_v1(Request):
|
||||
API_KEY = 18
|
||||
API_VERSION = 1
|
||||
RESPONSE_TYPE = ApiVersionsResponse_v1
|
||||
SCHEMA = ApiVersionsRequest_v0.SCHEMA
|
||||
|
||||
|
||||
class ApiVersionsRequest_v2(Request):
|
||||
API_KEY = 18
|
||||
API_VERSION = 2
|
||||
RESPONSE_TYPE = ApiVersionsResponse_v2
|
||||
SCHEMA = ApiVersionsRequest_v1.SCHEMA
|
||||
|
||||
|
||||
class ApiVersionsRequest_v3(Request):
|
||||
API_KEY = 18
|
||||
API_VERSION = 3
|
||||
RESPONSE_TYPE = ApiVersionsResponse_v3
|
||||
SCHEMA = Schema(
|
||||
('client_software_name', CompactString('utf-8')),
|
||||
('client_software_version', CompactString('utf-8')),
|
||||
('_tagged_fields', TaggedFields)
|
||||
)
|
||||
FLEXIBLE_VERSION = True
|
||||
|
||||
|
||||
class ApiVersionsRequest_v4(Request):
|
||||
API_KEY = 18
|
||||
API_VERSION = 4
|
||||
RESPONSE_TYPE = ApiVersionsResponse_v4
|
||||
SCHEMA = ApiVersionsRequest_v3.SCHEMA
|
||||
FLEXIBLE_VERSION = True
|
||||
|
||||
|
||||
ApiVersionsRequest = [
|
||||
ApiVersionsRequest_v0, ApiVersionsRequest_v1, ApiVersionsRequest_v2,
|
||||
ApiVersionsRequest_v3, ApiVersionsRequest_v4,
|
||||
]
|
||||
ApiVersionsResponse = [
|
||||
ApiVersionsResponse_v0, ApiVersionsResponse_v1, ApiVersionsResponse_v2,
|
||||
ApiVersionsResponse_v3, ApiVersionsResponse_v4,
|
||||
]
|
||||
Reference in New Issue
Block a user