Add Scheduler suppliers directly to EventScheduler enum
This commit is contained in:
@@ -9,7 +9,6 @@ import io.reactivex.annotations.Nullable;
|
|||||||
import io.reactivex.disposables.CompositeDisposable;
|
import io.reactivex.disposables.CompositeDisposable;
|
||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.functions.Consumer;
|
import io.reactivex.functions.Consumer;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
|
||||||
import io.sentry.Sentry;
|
import io.sentry.Sentry;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -19,7 +18,6 @@ import javax.inject.Singleton;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.events.Event;
|
import net.runelite.api.events.Event;
|
||||||
import net.runelite.client.RuneLiteProperties;
|
import net.runelite.client.RuneLiteProperties;
|
||||||
import net.runelite.client.callback.ClientThread;
|
|
||||||
import net.runelite.client.config.OpenOSRSConfig;
|
import net.runelite.client.config.OpenOSRSConfig;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -33,9 +31,6 @@ public class EventBus implements EventBusInterface
|
|||||||
@Inject
|
@Inject
|
||||||
private OpenOSRSConfig openOSRSConfig;
|
private OpenOSRSConfig openOSRSConfig;
|
||||||
|
|
||||||
@Inject
|
|
||||||
private ClientThread clientThread;
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private <T extends Event> Relay<Object> getSubject(Class<T> eventClass)
|
private <T extends Event> Relay<Object> getSubject(Class<T> eventClass)
|
||||||
{
|
{
|
||||||
@@ -60,41 +55,9 @@ public class EventBus implements EventBusInterface
|
|||||||
return observable -> until > 0 ? observable.take(until) : observable;
|
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 <T> ObservableTransformer<T, T> applyScheduler(EventScheduler eventScheduler, boolean subscribe)
|
private <T> ObservableTransformer<T, T> 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);
|
return observable -> scheduler == null ? observable : subscribe ? observable.subscribeOn(scheduler) : observable.observeOn(scheduler);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,27 @@
|
|||||||
package net.runelite.client.eventbus;
|
package net.runelite.client.eventbus;
|
||||||
|
|
||||||
|
import io.reactivex.Scheduler;
|
||||||
import io.reactivex.annotations.Nullable;
|
import io.reactivex.annotations.Nullable;
|
||||||
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
public enum EventScheduler
|
public enum EventScheduler
|
||||||
{
|
{
|
||||||
DEFAULT(null),
|
DEFAULT(() -> null),
|
||||||
COMPUTATION("computation"),
|
COMPUTATION(Schedulers::computation),
|
||||||
IO("io"),
|
IO(Schedulers::io),
|
||||||
NEWTHREAD("newThread"),
|
NEWTHREAD(Schedulers::newThread),
|
||||||
SINGLE("single"),
|
SINGLE(Schedulers::single),
|
||||||
TRAMPOLINE("trampoline"),
|
TRAMPOLINE(Schedulers::trampoline),
|
||||||
CLIENT("client");
|
CLIENT(Schedulers::single);
|
||||||
|
|
||||||
public final String scheduler;
|
private Supplier<Scheduler> scheduler;
|
||||||
|
|
||||||
EventScheduler(@Nullable String scheduler)
|
@Nullable
|
||||||
|
public Scheduler get()
|
||||||
{
|
{
|
||||||
this.scheduler = scheduler;
|
return scheduler.get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user