mirror of
https://github.com/GeyserMC/Floodgate.git
synced 2025-12-19 14:59:20 +00:00
Updated to the latest events version. Share a thread pool
This commit is contained in:
@@ -27,6 +27,8 @@ package org.geysermc.floodgate.event;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.geysermc.event.PostOrder;
|
||||
import org.geysermc.event.bus.impl.EventBusImpl;
|
||||
import org.geysermc.event.subscribe.Subscribe;
|
||||
import org.geysermc.event.subscribe.Subscriber;
|
||||
@@ -35,10 +37,11 @@ import org.geysermc.event.subscribe.Subscriber;
|
||||
public final class EventBus extends EventBusImpl<Object, EventSubscriber<?>> {
|
||||
@Override
|
||||
protected <H, T, B extends Subscriber<T>> B makeSubscription(
|
||||
Class<T> eventClass,
|
||||
Subscribe subscribe,
|
||||
H listener,
|
||||
BiConsumer<H, T> handler) {
|
||||
@NonNull Class<T> eventClass,
|
||||
@NonNull Subscribe subscribe,
|
||||
@NonNull H listener,
|
||||
@NonNull BiConsumer<H, T> handler
|
||||
) {
|
||||
return (B) new EventSubscriber<>(
|
||||
eventClass, subscribe.postOrder(), subscribe.ignoreCancelled(), listener, handler
|
||||
);
|
||||
@@ -46,8 +49,10 @@ public final class EventBus extends EventBusImpl<Object, EventSubscriber<?>> {
|
||||
|
||||
@Override
|
||||
protected <T, B extends Subscriber<T>> B makeSubscription(
|
||||
Class<T> eventClass,
|
||||
Consumer<T> handler) {
|
||||
return (B) new EventSubscriber<>(eventClass, handler);
|
||||
@NonNull Class<T> eventClass,
|
||||
@NonNull Consumer<T> handler,
|
||||
@NonNull PostOrder postOrder
|
||||
) {
|
||||
return (B) new EventSubscriber<>(eventClass, handler, postOrder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,12 +27,17 @@ package org.geysermc.floodgate.event;
|
||||
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.geysermc.event.PostOrder;
|
||||
import org.geysermc.event.subscribe.impl.SubscriberImpl;
|
||||
|
||||
public final class EventSubscriber<E> extends SubscriberImpl<E> {
|
||||
EventSubscriber(Class<E> eventClass, Consumer<E> handler) {
|
||||
super(eventClass, handler);
|
||||
EventSubscriber(
|
||||
@NonNull Class<E> eventClass,
|
||||
@NonNull Consumer<E> handler,
|
||||
@NonNull PostOrder postOrder
|
||||
) {
|
||||
super(eventClass, handler, postOrder);
|
||||
}
|
||||
|
||||
<H> EventSubscriber(
|
||||
@@ -40,7 +45,8 @@ public final class EventSubscriber<E> extends SubscriberImpl<E> {
|
||||
PostOrder postOrder,
|
||||
boolean ignoreCancelled,
|
||||
H handlerInstance,
|
||||
BiConsumer<H, E> handler) {
|
||||
BiConsumer<H, E> handler
|
||||
) {
|
||||
super(eventClass, postOrder, ignoreCancelled, handlerInstance, handler);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ import org.geysermc.floodgate.util.InjectorHolder;
|
||||
@Listener
|
||||
public abstract class CommonPlayerLink implements PlayerLink {
|
||||
@Getter(AccessLevel.PROTECTED)
|
||||
private final ExecutorService executorService = Executors.newFixedThreadPool(11);
|
||||
private final ExecutorService executorService = Executors.newCachedThreadPool();
|
||||
|
||||
@Getter private boolean enabled;
|
||||
@Getter private boolean allowLinking;
|
||||
|
||||
@@ -30,12 +30,16 @@ import com.google.inject.Provides;
|
||||
import com.google.inject.Singleton;
|
||||
import com.google.inject.TypeLiteral;
|
||||
import com.google.inject.name.Named;
|
||||
import com.google.inject.name.Names;
|
||||
import com.google.inject.spi.InjectionListener;
|
||||
import com.google.inject.spi.TypeEncounter;
|
||||
import com.google.inject.spi.TypeListener;
|
||||
import io.netty.util.AttributeKey;
|
||||
import java.nio.file.Path;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.geysermc.event.PostOrder;
|
||||
import org.geysermc.floodgate.addon.data.HandshakeHandlersImpl;
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
||||
import org.geysermc.floodgate.api.SimpleFloodgateApi;
|
||||
@@ -53,6 +57,7 @@ import org.geysermc.floodgate.crypto.Base64Topping;
|
||||
import org.geysermc.floodgate.crypto.FloodgateCipher;
|
||||
import org.geysermc.floodgate.crypto.KeyProducer;
|
||||
import org.geysermc.floodgate.event.EventBus;
|
||||
import org.geysermc.floodgate.event.ShutdownEvent;
|
||||
import org.geysermc.floodgate.event.util.ListenerAnnotationMatcher;
|
||||
import org.geysermc.floodgate.inject.CommonPlatformInjector;
|
||||
import org.geysermc.floodgate.link.PlayerLinkHolder;
|
||||
@@ -80,6 +85,10 @@ public class CommonModule extends AbstractModule {
|
||||
}
|
||||
});
|
||||
|
||||
ExecutorService commonPool = Executors.newCachedThreadPool();
|
||||
eventBus.subscribe(ShutdownEvent.class, ignored -> commonPool.shutdown(), PostOrder.LAST);
|
||||
bind(ExecutorService.class).annotatedWith(Names.named("commonPool")).toInstance(commonPool);
|
||||
|
||||
bind(HttpClient.class).in(Singleton.class);
|
||||
|
||||
bind(FloodgateApi.class).to(SimpleFloodgateApi.class);
|
||||
|
||||
@@ -34,14 +34,10 @@ import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.geysermc.event.Listener;
|
||||
import org.geysermc.event.subscribe.Subscribe;
|
||||
import org.geysermc.floodgate.api.logger.FloodgateLogger;
|
||||
import org.geysermc.floodgate.command.util.Permission;
|
||||
import org.geysermc.floodgate.event.ShutdownEvent;
|
||||
import org.geysermc.floodgate.news.data.AnnouncementData;
|
||||
import org.geysermc.floodgate.news.data.BuildSpecificData;
|
||||
import org.geysermc.floodgate.news.data.CheckAfterData;
|
||||
@@ -52,10 +48,11 @@ import org.geysermc.floodgate.util.HttpClient;
|
||||
import org.geysermc.floodgate.util.HttpClient.HttpResponse;
|
||||
|
||||
@AutoBind
|
||||
@Listener
|
||||
public class NewsChecker {
|
||||
private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
|
||||
private final Map<Integer, NewsItem> activeNewsItems = new HashMap<>();
|
||||
@Inject
|
||||
@Named("commonPool")
|
||||
private ScheduledExecutorService executorService;
|
||||
|
||||
@Inject
|
||||
private CommandUtil commandUtil;
|
||||
@@ -204,13 +201,4 @@ public class NewsChecker {
|
||||
handleNewsItem(null, item, action);
|
||||
}
|
||||
}
|
||||
|
||||
public void shutdown() {
|
||||
executorService.shutdown();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onShutdown(ShutdownEvent ignored) {
|
||||
shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,30 +27,31 @@ package org.geysermc.floodgate.util;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
import com.google.inject.name.Named;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
import org.geysermc.event.Listener;
|
||||
import org.geysermc.event.subscribe.Subscribe;
|
||||
import org.geysermc.floodgate.event.ShutdownEvent;
|
||||
|
||||
// resources are properly closed and ignoring the original stack trace is intended
|
||||
@SuppressWarnings({"PMD.CloseResource", "PMD.PreserveStackTrace"})
|
||||
@Listener
|
||||
@Singleton
|
||||
public class HttpClient {
|
||||
private static final String USER_AGENT = "GeyserMC/Floodgate";
|
||||
|
||||
private final ExecutorService executorService = Executors.newSingleThreadExecutor();
|
||||
private final Gson gson = new Gson();
|
||||
@Inject
|
||||
@Named("commonPool")
|
||||
private ExecutorService executorService;
|
||||
|
||||
public CompletableFuture<DefaultHttpResponse> asyncGet(String urlString) {
|
||||
return CompletableFuture.supplyAsync(() -> get(urlString), executorService);
|
||||
@@ -162,11 +163,6 @@ public class HttpClient {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onShutdown(ShutdownEvent ignored) {
|
||||
executorService.shutdown();
|
||||
}
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public static class HttpResponse<T> {
|
||||
|
||||
Reference in New Issue
Block a user