AdaptiveCalculator Class — netty Architecture
Architecture documentation for the AdaptiveCalculator class in AdaptiveCalculator.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 2f0e419b_c7aa_e7dc_bae6_34e16344d97c["AdaptiveCalculator"] b6074012_9ec6_07d6_2e86_ce983dc06452["AdaptiveCalculator.java"] 2f0e419b_c7aa_e7dc_bae6_34e16344d97c -->|defined in| b6074012_9ec6_07d6_2e86_ce983dc06452 e4c6718e_20f4_617e_2a77_e29ca7eba9d2["getSizeTableIndex()"] 2f0e419b_c7aa_e7dc_bae6_34e16344d97c -->|method| e4c6718e_20f4_617e_2a77_e29ca7eba9d2 f9ed7c4e_7457_4cd3_369d_31d2b8270cf4["AdaptiveCalculator()"] 2f0e419b_c7aa_e7dc_bae6_34e16344d97c -->|method| f9ed7c4e_7457_4cd3_369d_31d2b8270cf4 d410ae4c_f791_89af_3305_5d66c5905f9c["record()"] 2f0e419b_c7aa_e7dc_bae6_34e16344d97c -->|method| d410ae4c_f791_89af_3305_5d66c5905f9c 76ec0871_3b42_6e92_a465_232b3a1a07e4["nextSize()"] 2f0e419b_c7aa_e7dc_bae6_34e16344d97c -->|method| 76ec0871_3b42_6e92_a465_232b3a1a07e4
Relationship Graph
Source Code
common/src/main/java/io/netty/util/internal/AdaptiveCalculator.java lines 28–136
public final class AdaptiveCalculator {
private static final int INDEX_INCREMENT = 4;
private static final int INDEX_DECREMENT = 1;
private static final int[] SIZE_TABLE;
static {
List<Integer> sizeTable = new ArrayList<Integer>();
for (int i = 16; i < 512; i += 16) {
sizeTable.add(i);
}
// Suppress a warning since i becomes negative when an integer overflow happens
for (int i = 512; i > 0; i <<= 1) {
sizeTable.add(i);
}
SIZE_TABLE = new int[sizeTable.size()];
for (int i = 0; i < SIZE_TABLE.length; i ++) {
SIZE_TABLE[i] = sizeTable.get(i);
}
}
private static int getSizeTableIndex(final int size) {
for (int low = 0, high = SIZE_TABLE.length - 1;;) {
if (high < low) {
return low;
}
if (high == low) {
return high;
}
int mid = low + high >>> 1;
int a = SIZE_TABLE[mid];
int b = SIZE_TABLE[mid + 1];
if (size > b) {
low = mid + 1;
} else if (size < a) {
high = mid - 1;
} else if (size == a) {
return mid;
} else {
return mid + 1;
}
}
}
private final int minIndex;
private final int maxIndex;
private final int minCapacity;
private final int maxCapacity;
private int index;
private int nextSize;
private boolean decreaseNow;
public AdaptiveCalculator(int minimum, int initial, int maximum) {
checkPositive(minimum, "minimum");
if (initial < minimum) {
throw new IllegalArgumentException("initial: " + initial);
}
if (maximum < initial) {
throw new IllegalArgumentException("maximum: " + maximum);
}
int minIndex = getSizeTableIndex(minimum);
if (SIZE_TABLE[minIndex] < minimum) {
this.minIndex = minIndex + 1;
} else {
this.minIndex = minIndex;
}
int maxIndex = getSizeTableIndex(maximum);
if (SIZE_TABLE[maxIndex] > maximum) {
this.maxIndex = maxIndex - 1;
} else {
this.maxIndex = maxIndex;
}
int initialIndex = getSizeTableIndex(initial);
if (SIZE_TABLE[initialIndex] > initial) {
this.index = initialIndex - 1;
Source
Frequently Asked Questions
What is the AdaptiveCalculator class?
AdaptiveCalculator is a class in the netty codebase, defined in common/src/main/java/io/netty/util/internal/AdaptiveCalculator.java.
Where is AdaptiveCalculator defined?
AdaptiveCalculator is defined in common/src/main/java/io/netty/util/internal/AdaptiveCalculator.java at line 28.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free