1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.handler.codec.quic;
17
18 import io.netty.buffer.ByteBuf;
19 import io.netty.channel.epoll.SegmentedDatagramPacket;
20 import io.netty.channel.socket.DatagramPacket;
21 import io.netty.util.internal.ObjectUtil;
22
23 import java.net.InetSocketAddress;
24
25
26
27
28 public final class EpollQuicUtils {
29
30 private EpollQuicUtils() { }
31
32
33
34
35
36
37
38
39 public static SegmentedDatagramPacketAllocator newSegmentedAllocator(int maxNumSegments) {
40 ObjectUtil.checkInRange(maxNumSegments, 1, 64, "maxNumSegments");
41 if (SegmentedDatagramPacket.isSupported()) {
42 return new EpollSegmentedDatagramPacketAllocator(maxNumSegments);
43 }
44 return SegmentedDatagramPacketAllocator.NONE;
45 }
46
47 private static final class EpollSegmentedDatagramPacketAllocator implements SegmentedDatagramPacketAllocator {
48
49 private final int maxNumSegments;
50
51 EpollSegmentedDatagramPacketAllocator(int maxNumSegments) {
52 this.maxNumSegments = maxNumSegments;
53 }
54
55 @Override
56 public int maxNumSegments() {
57 return maxNumSegments;
58 }
59
60 @Override
61 public DatagramPacket newPacket(ByteBuf buffer, int segmentSize, InetSocketAddress remoteAddress) {
62 return new io.netty.channel.unix.SegmentedDatagramPacket(buffer, segmentSize, remoteAddress);
63 }
64 }
65 }