kafka_api/records/
consts.rs

1// Copyright 2024 tison <wander4096@gmail.com>
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15pub const NO_SEQUENCE: i32 = -1;
16
17// The current attributes are given below:
18// ---------------------------------------------------------------------------------------------------------------------------
19// | Unused (7-15) | Delete Horizon Flag (6) | Control (5) | Transactional (4) | Timestamp Type (3) | Compression Type (0-2) |
20// ---------------------------------------------------------------------------------------------------------------------------
21pub const COMPRESSION_CODEC_MASK: u8 = 0x07;
22pub const TIMESTAMP_TYPE_MASK: u8 = 0x08;
23pub const TRANSACTIONAL_FLAG_MASK: u8 = 0x10;
24pub const CONTROL_FLAG_MASK: u8 = 0x20;
25pub const DELETE_HORIZON_FLAG_MASK: u8 = 0x40;
26
27// offset table
28pub const BASE_OFFSET_OFFSET: usize = 0;
29pub const BASE_OFFSET_LENGTH: usize = 8;
30pub const LENGTH_OFFSET: usize = BASE_OFFSET_OFFSET + BASE_OFFSET_LENGTH;
31pub const LENGTH_LENGTH: usize = 4;
32pub const PARTITION_LEADER_EPOCH_OFFSET: usize = LENGTH_OFFSET + LENGTH_LENGTH;
33pub const PARTITION_LEADER_EPOCH_LENGTH: usize = 4;
34pub const MAGIC_OFFSET: usize = PARTITION_LEADER_EPOCH_OFFSET + PARTITION_LEADER_EPOCH_LENGTH;
35pub const MAGIC_LENGTH: usize = 1;
36pub const CRC_OFFSET: usize = MAGIC_OFFSET + MAGIC_LENGTH;
37pub const CRC_LENGTH: usize = 4;
38pub const ATTRIBUTES_OFFSET: usize = CRC_OFFSET + CRC_LENGTH;
39pub const ATTRIBUTE_LENGTH: usize = 2;
40pub const LAST_OFFSET_DELTA_OFFSET: usize = ATTRIBUTES_OFFSET + ATTRIBUTE_LENGTH;
41pub const LAST_OFFSET_DELTA_LENGTH: usize = 4;
42pub const BASE_TIMESTAMP_OFFSET: usize = LAST_OFFSET_DELTA_OFFSET + LAST_OFFSET_DELTA_LENGTH;
43pub const BASE_TIMESTAMP_LENGTH: usize = 8;
44pub const MAX_TIMESTAMP_OFFSET: usize = BASE_TIMESTAMP_OFFSET + BASE_TIMESTAMP_LENGTH;
45pub const MAX_TIMESTAMP_LENGTH: usize = 8;
46pub const PRODUCER_ID_OFFSET: usize = MAX_TIMESTAMP_OFFSET + MAX_TIMESTAMP_LENGTH;
47pub const PRODUCER_ID_LENGTH: usize = 8;
48pub const PRODUCER_EPOCH_OFFSET: usize = PRODUCER_ID_OFFSET + PRODUCER_ID_LENGTH;
49pub const PRODUCER_EPOCH_LENGTH: usize = 2;
50pub const BASE_SEQUENCE_OFFSET: usize = PRODUCER_EPOCH_OFFSET + PRODUCER_EPOCH_LENGTH;
51pub const BASE_SEQUENCE_LENGTH: usize = 4;
52pub const RECORDS_COUNT_OFFSET: usize = BASE_SEQUENCE_OFFSET + BASE_SEQUENCE_LENGTH;
53pub const RECORDS_COUNT_LENGTH: usize = 4;
54pub const RECORDS_OFFSET: usize = RECORDS_COUNT_OFFSET + RECORDS_COUNT_LENGTH;
55pub const RECORD_BATCH_OVERHEAD: usize = RECORDS_OFFSET;
56
57pub const HEADER_SIZE_UP_TO_MAGIC: usize = MAGIC_OFFSET + MAGIC_LENGTH;
58pub const LOG_OVERHEAD: usize = LENGTH_OFFSET + LENGTH_LENGTH;