Skip to content

Commit 49fd50d

Browse files
committed
Add "Mcpl.disable-native-transport", "Mcpl.epoll", "Mcpl.kqueue" properties to allow transport matching
1 parent 711b5e7 commit 49fd50d

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

protocol/src/main/java/org/geysermc/mcprotocollib/network/helper/TransportHelper.java

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,12 @@ public record TransportType(TransportMethod method,
5454

5555
@SuppressWarnings("deprecation")
5656
private static TransportType determineTransportMethod() {
57-
if (isClassAvailable("io.netty.channel.uring.IoUring")
58-
&& IoUring.isAvailable()
59-
&& Boolean.getBoolean("Mcpl.io_uring")
60-
) {
61-
return new TransportType(
57+
if (!Boolean.getBoolean("Mcpl.disable-native-transport")) {
58+
if (isClassAvailable("io.netty.channel.uring.IoUring")
59+
&& IoUring.isAvailable()
60+
&& Boolean.getBoolean("Mcpl.io_uring")
61+
) {
62+
return new TransportType(
6263
TransportMethod.IO_URING,
6364
IoUringServerSocketChannel.class,
6465
IoUringServerSocketChannel::new,
@@ -69,11 +70,14 @@ private static TransportType determineTransportMethod() {
6970
(threads, factory) -> new MultiThreadIoEventLoopGroup(threads, factory, IoUringIoHandler.newFactory()),
7071
IoUring.isTcpFastOpenServerSideAvailable(),
7172
IoUring.isTcpFastOpenClientSideAvailable()
72-
);
73-
}
73+
);
74+
}
7475

75-
if (isClassAvailable("io.netty.channel.epoll.Epoll") && Epoll.isAvailable()) {
76-
return new TransportType(
76+
if (isClassAvailable("io.netty.channel.epoll.Epoll")
77+
&& Epoll.isAvailable()
78+
&& Boolean.parseBoolean(System.getProperty("Mcpl.epoll", "true"))
79+
) {
80+
return new TransportType(
7781
TransportMethod.EPOLL,
7882
EpollServerSocketChannel.class,
7983
EpollServerSocketChannel::new,
@@ -85,11 +89,14 @@ private static TransportType determineTransportMethod() {
8589
new MultiThreadIoEventLoopGroup(threads, factory, EpollIoHandler.newFactory()) : EpollEventLoopGroup::new,
8690
Epoll.isTcpFastOpenServerSideAvailable(),
8791
Epoll.isTcpFastOpenClientSideAvailable()
88-
);
89-
}
92+
);
93+
}
9094

91-
if (isClassAvailable("io.netty.channel.kqueue.KQueue") && KQueue.isAvailable()) {
92-
return new TransportType(
95+
if (isClassAvailable("io.netty.channel.kqueue.KQueue")
96+
&& KQueue.isAvailable()
97+
&& Boolean.parseBoolean(System.getProperty("Mcpl.kqueue", "true"))
98+
) {
99+
return new TransportType(
93100
TransportMethod.KQUEUE,
94101
KQueueServerSocketChannel.class,
95102
KQueueServerSocketChannel::new,
@@ -101,7 +108,8 @@ private static TransportType determineTransportMethod() {
101108
new MultiThreadIoEventLoopGroup(threads, factory, KQueueIoHandler.newFactory()) : KQueueEventLoopGroup::new,
102109
KQueue.isTcpFastOpenServerSideAvailable(),
103110
KQueue.isTcpFastOpenClientSideAvailable()
104-
);
111+
);
112+
}
105113
}
106114

107115
return new TransportType(

0 commit comments

Comments
 (0)