1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.buffer;
17
18 import io.netty.util.internal.PlatformDependent;
19
20 import java.nio.ByteBuffer;
21
22 class UnpooledUnsafeNoCleanerDirectByteBuf extends UnpooledUnsafeDirectByteBuf {
23
24 UnpooledUnsafeNoCleanerDirectByteBuf(ByteBufAllocator alloc, int initialCapacity, int maxCapacity) {
25 super(alloc, initialCapacity, maxCapacity);
26 }
27
28 @Override
29 protected ByteBuffer allocateDirect(int initialCapacity) {
30 return PlatformDependent.allocateDirectNoCleaner(initialCapacity);
31 }
32
33 ByteBuffer reallocateDirect(ByteBuffer oldBuffer, int initialCapacity) {
34 return PlatformDependent.reallocateDirectNoCleaner(oldBuffer, initialCapacity);
35 }
36
37 @Override
38 protected void freeDirect(ByteBuffer buffer) {
39 PlatformDependent.freeDirectNoCleaner(buffer);
40 }
41
42 @Override
43 public ByteBuf capacity(int newCapacity) {
44 checkNewCapacity(newCapacity);
45
46 int oldCapacity = capacity();
47 if (newCapacity == oldCapacity) {
48 return this;
49 }
50
51 ByteBuffer newBuffer = reallocateDirect(buffer, newCapacity);
52
53 if (newCapacity < oldCapacity) {
54 if (readerIndex() < newCapacity) {
55 if (writerIndex() > newCapacity) {
56 writerIndex(newCapacity);
57 }
58 } else {
59 setIndex(newCapacity, newCapacity);
60 }
61 }
62 setByteBuffer(newBuffer, false);
63 return this;
64 }
65 }