Make IO_uring opt-in via `-DGeyser.io_uring=true` flag

This commit is contained in:
onebeastchris 2024-04-18 18:46:24 +02:00
parent f44d76e267
commit 38eda27e96
2 changed files with 10 additions and 12 deletions

View File

@ -43,8 +43,8 @@ dependencies {
implementation(libs.netty.transport.native.epoll) { artifact { classifier = "linux-x86_64" } }
implementation(libs.netty.transport.native.epoll) { artifact { classifier = "linux-aarch_64" } }
implementation(libs.netty.transport.native.kqueue) { artifact { classifier = "osx-x86_64" } }
// implementation(libs.netty.transport.native.io.uring) { artifact { classifier = "linux-x86_64" } }
// implementation(libs.netty.transport.native.io.uring) { artifact { classifier = "linux-aarch_64" } }
implementation(libs.netty.transport.native.io.uring) { artifact { classifier = "linux-x86_64" } }
implementation(libs.netty.transport.native.io.uring) { artifact { classifier = "linux-aarch_64" } }
// Adventure text serialization
api(libs.bundles.adventure)
@ -64,11 +64,6 @@ dependencies {
api(libs.events)
}
configurations.api {
// This is still experimental - additionally, it could only really benefit standalone
exclude(group = "io.netty.incubator", module = "netty-incubator-transport-native-io_uring")
}
tasks.processResources {
// This is solely for backwards compatibility for other programs that used this file before the switch to gradle.
// It used to be generated by the maven Git-Commit-Id-Plugin

View File

@ -38,6 +38,9 @@ import io.netty.channel.kqueue.KQueueEventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.DatagramChannel;
import io.netty.channel.socket.nio.NioDatagramChannel;
import io.netty.incubator.channel.uring.IOUring;
import io.netty.incubator.channel.uring.IOUringDatagramChannel;
import io.netty.incubator.channel.uring.IOUringEventLoopGroup;
import io.netty.util.concurrent.Future;
import lombok.Getter;
import net.jodah.expiringmap.ExpirationPolicy;
@ -414,11 +417,11 @@ public final class GeyserServer {
}
private static Transport compatibleTransport() {
// if (isClassAvailable("io.netty.incubator.channel.uring.IOUring")
// && IOUring.isAvailable()
// && Boolean.parseBoolean(System.getProperty("Geyser.io_uring"))) {
// return new Transport(IOUringDatagramChannel.class, IOUringEventLoopGroup::new);
// }
if (isClassAvailable("io.netty.incubator.channel.uring.IOUring")
&& IOUring.isAvailable()
&& Boolean.parseBoolean(System.getProperty("Geyser.io_uring"))) {
return new Transport(IOUringDatagramChannel.class, IOUringEventLoopGroup::new);
}
if (isClassAvailable("io.netty.channel.epoll.Epoll") && Epoll.isAvailable()) {
return new Transport(EpollDatagramChannel.class, EpollEventLoopGroup::new);