Skip to content

Commit ace0762

Browse files
authored
refactor(encoder): extract varint constants to improve readability (#744)
1 parent c43c3ac commit ace0762

1 file changed

Lines changed: 28 additions & 22 deletions

File tree

geaflow/geaflow-common/src/main/java/org/apache/geaflow/common/encoder/impl/IntegerEncoder.java

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,41 +27,47 @@ public class IntegerEncoder extends AbstractEncoder<Integer> {
2727

2828
public static final IntegerEncoder INSTANCE = new IntegerEncoder();
2929

30+
// VarInt encoding constants
31+
private static final int VARINT_MASK = 0x7F;
32+
private static final int VARINT_CONTINUE_FLAG = 0x80;
33+
private static final int VARINT_SHIFT = 7;
34+
private static final int DIRECT_WRITE_THRESHOLD = 128;
35+
3036
@Override
3137
public void encode(Integer data, OutputStream outputStream) throws IOException {
3238
// if between 0 ~ 127, just write the byte
33-
if (data >= 0 && data < 128) {
39+
if (data >= 0 && data < DIRECT_WRITE_THRESHOLD) {
3440
outputStream.write(data);
3541
return;
3642
}
3743

3844
// write var int, takes 1 ~ 5 byte
3945
int value = data;
40-
int varInt = (value & 0x7F);
41-
value >>>= 7;
46+
int varInt = (value & VARINT_MASK);
47+
value >>>= VARINT_SHIFT;
4248

43-
varInt |= 0x80;
44-
varInt |= ((value & 0x7F) << 8);
45-
value >>>= 7;
49+
varInt |= VARINT_CONTINUE_FLAG;
50+
varInt |= ((value & VARINT_MASK) << 8);
51+
value >>>= VARINT_SHIFT;
4652
if (value == 0) {
4753
outputStream.write(varInt);
4854
outputStream.write(varInt >> 8);
4955
return;
5056
}
5157

52-
varInt |= (0x80 << 8);
53-
varInt |= ((value & 0x7F) << 16);
54-
value >>>= 7;
58+
varInt |= (VARINT_CONTINUE_FLAG << 8);
59+
varInt |= ((value & VARINT_MASK) << 16);
60+
value >>>= VARINT_SHIFT;
5561
if (value == 0) {
5662
outputStream.write(varInt);
5763
outputStream.write(varInt >> 8);
5864
outputStream.write(varInt >> 16);
5965
return;
6066
}
6167

62-
varInt |= (0x80 << 16);
63-
varInt |= ((value & 0x7F) << 24);
64-
value >>>= 7;
68+
varInt |= (VARINT_CONTINUE_FLAG << 16);
69+
varInt |= ((value & VARINT_MASK) << 24);
70+
value >>>= VARINT_SHIFT;
6571
if (value == 0) {
6672
outputStream.write(varInt);
6773
outputStream.write(varInt >> 8);
@@ -70,7 +76,7 @@ public void encode(Integer data, OutputStream outputStream) throws IOException {
7076
return;
7177
}
7278

73-
varInt |= (0x80 << 24);
79+
varInt |= (VARINT_CONTINUE_FLAG << 24);
7480
outputStream.write(varInt);
7581
outputStream.write(varInt >> 8);
7682
outputStream.write(varInt >> 16);
@@ -81,19 +87,19 @@ public void encode(Integer data, OutputStream outputStream) throws IOException {
8187
@Override
8288
public Integer decode(InputStream inputStream) throws IOException {
8389
int b = inputStream.read();
84-
int result = b & 0x7F;
85-
if ((b & 0x80) != 0) {
90+
int result = b & VARINT_MASK;
91+
if ((b & VARINT_CONTINUE_FLAG) != 0) {
8692
b = inputStream.read();
87-
result |= (b & 0x7F) << 7;
88-
if ((b & 0x80) != 0) {
93+
result |= (b & VARINT_MASK) << VARINT_SHIFT;
94+
if ((b & VARINT_CONTINUE_FLAG) != 0) {
8995
b = inputStream.read();
90-
result |= (b & 0x7F) << 14;
91-
if ((b & 0x80) != 0) {
96+
result |= (b & VARINT_MASK) << (VARINT_SHIFT * 2);
97+
if ((b & VARINT_CONTINUE_FLAG) != 0) {
9298
b = inputStream.read();
93-
result |= (b & 0x7F) << 21;
94-
if ((b & 0x80) != 0) {
99+
result |= (b & VARINT_MASK) << (VARINT_SHIFT * 3);
100+
if ((b & VARINT_CONTINUE_FLAG) != 0) {
95101
b = inputStream.read();
96-
result |= (b & 0x7F) << 28;
102+
result |= (b & VARINT_MASK) << (VARINT_SHIFT * 4);
97103
}
98104
}
99105
}

0 commit comments

Comments
 (0)