From c691351825ed632d0e8f1685f59dd9de7f838c7b Mon Sep 17 00:00:00 2001 From: Lucwousin Date: Sun, 15 Dec 2019 01:23:09 +0100 Subject: [PATCH] Add Scheduler suppliers directly to EventScheduler enum --- .../runelite/client/eventbus/EventBus.java | 39 +------------------ .../client/eventbus/EventScheduler.java | 26 ++++++++----- 2 files changed, 17 insertions(+), 48 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java b/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java index d5dea07576..2bcde713dd 100644 --- a/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java +++ b/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java @@ -9,7 +9,6 @@ import io.reactivex.annotations.Nullable; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; -import io.reactivex.schedulers.Schedulers; import io.sentry.Sentry; import java.util.HashMap; import java.util.Map; @@ -19,7 +18,6 @@ import javax.inject.Singleton; import lombok.extern.slf4j.Slf4j; import net.runelite.api.events.Event; import net.runelite.client.RuneLiteProperties; -import net.runelite.client.callback.ClientThread; import net.runelite.client.config.OpenOSRSConfig; @Slf4j @@ -33,9 +31,6 @@ public class EventBus implements EventBusInterface @Inject private OpenOSRSConfig openOSRSConfig; - @Inject - private ClientThread clientThread; - @NonNull private Relay getSubject(Class eventClass) { @@ -60,41 +55,9 @@ public class EventBus implements EventBusInterface return observable -> until > 0 ? observable.take(until) : observable; } - private Scheduler getScheduler(EventScheduler scheduler) - { - Scheduler subscribeScheduler; - switch (scheduler) - { - case COMPUTATION: - subscribeScheduler = Schedulers.computation(); - break; - case IO: - subscribeScheduler = Schedulers.io(); - break; - case NEWTHREAD: - subscribeScheduler = Schedulers.newThread(); - break; - case SINGLE: - subscribeScheduler = Schedulers.single(); - break; - case TRAMPOLINE: - subscribeScheduler = Schedulers.trampoline(); - break; - case CLIENT: - subscribeScheduler = Schedulers.from(clientThread); - break; - case DEFAULT: - default: - subscribeScheduler = null; - break; - } - - return subscribeScheduler; - } - private ObservableTransformer applyScheduler(EventScheduler eventScheduler, boolean subscribe) { - Scheduler scheduler = getScheduler(eventScheduler); + Scheduler scheduler = eventScheduler.get(); return observable -> scheduler == null ? observable : subscribe ? observable.subscribeOn(scheduler) : observable.observeOn(scheduler); } diff --git a/runelite-client/src/main/java/net/runelite/client/eventbus/EventScheduler.java b/runelite-client/src/main/java/net/runelite/client/eventbus/EventScheduler.java index 7923cc17c8..5a0278ae50 100644 --- a/runelite-client/src/main/java/net/runelite/client/eventbus/EventScheduler.java +++ b/runelite-client/src/main/java/net/runelite/client/eventbus/EventScheduler.java @@ -1,21 +1,27 @@ package net.runelite.client.eventbus; +import io.reactivex.Scheduler; import io.reactivex.annotations.Nullable; +import io.reactivex.schedulers.Schedulers; +import java.util.function.Supplier; +import lombok.AllArgsConstructor; +@AllArgsConstructor public enum EventScheduler { - DEFAULT(null), - COMPUTATION("computation"), - IO("io"), - NEWTHREAD("newThread"), - SINGLE("single"), - TRAMPOLINE("trampoline"), - CLIENT("client"); + DEFAULT(() -> null), + COMPUTATION(Schedulers::computation), + IO(Schedulers::io), + NEWTHREAD(Schedulers::newThread), + SINGLE(Schedulers::single), + TRAMPOLINE(Schedulers::trampoline), + CLIENT(Schedulers::single); - public final String scheduler; + private Supplier scheduler; - EventScheduler(@Nullable String scheduler) + @Nullable + public Scheduler get() { - this.scheduler = scheduler; + return scheduler.get(); } }