Bzip2BitReader Class — netty Architecture
Architecture documentation for the Bzip2BitReader class in Bzip2BitReader.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD f3de2c91_9e43_192d_7404_f34bb245b096["Bzip2BitReader"] 620d12ab_1bd1_c89a_c26f_3a6e21cbd938["Bzip2BitReader.java"] f3de2c91_9e43_192d_7404_f34bb245b096 -->|defined in| 620d12ab_1bd1_c89a_c26f_3a6e21cbd938 351ac7bd_8116_dd02_0a63_d4d65fe408e1["setByteBuf()"] f3de2c91_9e43_192d_7404_f34bb245b096 -->|method| 351ac7bd_8116_dd02_0a63_d4d65fe408e1 64bbf571_faa3_8f8b_b0e0_5e4e593f88e0["readBits()"] f3de2c91_9e43_192d_7404_f34bb245b096 -->|method| 64bbf571_faa3_8f8b_b0e0_5e4e593f88e0 67f193e8_8674_1a88_0ac6_95c40b765c71["readBoolean()"] f3de2c91_9e43_192d_7404_f34bb245b096 -->|method| 67f193e8_8674_1a88_0ac6_95c40b765c71 54084591_20ad_5998_3154_f9a3c7ba1f38["readInt()"] f3de2c91_9e43_192d_7404_f34bb245b096 -->|method| 54084591_20ad_5998_3154_f9a3c7ba1f38 ce144534_a8ee_f386_66e6_eb5d15279574["refill()"] f3de2c91_9e43_192d_7404_f34bb245b096 -->|method| ce144534_a8ee_f386_66e6_eb5d15279574 2898e496_4278_f7a6_9ec4_1981fcfef1f6["isReadable()"] f3de2c91_9e43_192d_7404_f34bb245b096 -->|method| 2898e496_4278_f7a6_9ec4_1981fcfef1f6 121b2114_76fd_98d4_b01e_03bb0846810e["hasReadableBits()"] f3de2c91_9e43_192d_7404_f34bb245b096 -->|method| 121b2114_76fd_98d4_b01e_03bb0846810e 15e9b169_bf60_8183_a71f_29eaef85a9a6["hasReadableBytes()"] f3de2c91_9e43_192d_7404_f34bb245b096 -->|method| 15e9b169_bf60_8183_a71f_29eaef85a9a6
Relationship Graph
Source Code
codec-compression/src/main/java/io/netty/handler/codec/compression/Bzip2BitReader.java lines 25–157
class Bzip2BitReader {
/**
* Maximum count of possible readable bytes to check.
*/
private static final int MAX_COUNT_OF_READABLE_BYTES = Integer.MAX_VALUE >>> 3;
/**
* The {@link ByteBuf} from which to read data.
*/
private ByteBuf in;
/**
* A buffer of bits read from the input stream that have not yet been returned.
*/
private long bitBuffer;
/**
* The number of bits currently buffered in {@link #bitBuffer}.
*/
private int bitCount;
/**
* Set the {@link ByteBuf} from which to read data.
*/
void setByteBuf(ByteBuf in) {
this.in = in;
}
/**
* Reads up to 32 bits from the {@link ByteBuf}.
* @param count The number of bits to read (maximum {@code 32} as a size of {@code int})
* @return The bits requested, right-aligned within the integer
*/
int readBits(final int count) {
if (count < 0 || count > 32) {
throw new IllegalArgumentException("count: " + count + " (expected: 0-32 )");
}
int bitCount = this.bitCount;
long bitBuffer = this.bitBuffer;
if (bitCount < count) {
long readData;
int offset;
switch (in.readableBytes()) {
case 1: {
readData = in.readUnsignedByte();
offset = 8;
break;
}
case 2: {
readData = in.readUnsignedShort();
offset = 16;
break;
}
case 3: {
readData = in.readUnsignedMedium();
offset = 24;
break;
}
default: {
readData = in.readUnsignedInt();
offset = 32;
break;
}
}
bitBuffer = bitBuffer << offset | readData;
bitCount += offset;
this.bitBuffer = bitBuffer;
}
this.bitCount = bitCount -= count;
return (int) (bitBuffer >>> bitCount & (count != 32 ? (1 << count) - 1 : 0xFFFFFFFFL));
}
/**
* Reads a single bit from the {@link ByteBuf}.
* @return {@code true} if the bit read was {@code 1}, otherwise {@code false}
*/
boolean readBoolean() {
return readBits(1) != 0;
Source
Frequently Asked Questions
What is the Bzip2BitReader class?
Bzip2BitReader is a class in the netty codebase, defined in codec-compression/src/main/java/io/netty/handler/codec/compression/Bzip2BitReader.java.
Where is Bzip2BitReader defined?
Bzip2BitReader is defined in codec-compression/src/main/java/io/netty/handler/codec/compression/Bzip2BitReader.java at line 25.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free