1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.util.internal;
17
18 import java.nio.ByteBuffer;
19
20 final class DirectCleaner implements Cleaner {
21 @Override
22 public CleanableDirectBuffer allocate(int capacity) {
23 return new CleanableDirectBufferImpl(PlatformDependent.allocateDirectNoCleaner(capacity));
24 }
25
26 @Override
27 public void freeDirectBuffer(ByteBuffer buffer) {
28 PlatformDependent.freeDirectNoCleaner(buffer);
29 }
30
31 CleanableDirectBuffer reallocate(CleanableDirectBuffer buffer, int capacity) {
32 ByteBuffer newByteBuffer = PlatformDependent.reallocateDirectNoCleaner(buffer.buffer(), capacity);
33 return new CleanableDirectBufferImpl(newByteBuffer);
34 }
35
36 private static final class CleanableDirectBufferImpl implements CleanableDirectBuffer {
37 private final ByteBuffer buffer;
38
39 private CleanableDirectBufferImpl(ByteBuffer buffer) {
40 this.buffer = buffer;
41 }
42
43 @Override
44 public ByteBuffer buffer() {
45 return buffer;
46 }
47
48 @Override
49 public void clean() {
50 PlatformDependent.freeDirectNoCleaner(buffer);
51 }
52 }
53 }