All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hu.akarnokd.rxjava3.debug.multihook.OnScheduleMultiHandlerManager Maven / Gradle / Ivy

Go to download

RxJava 3.x extra sources, operators and components and ports of many 1.x companion libraries.

There is a newer version: 3.1.1
Show newest version
/*
 * Copyright 2016-2019 David Karnok
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package hu.akarnokd.rxjava3.debug.multihook;

import io.reactivex.rxjava3.functions.*;
import io.reactivex.rxjava3.plugins.RxJavaPlugins;

/**
 * Handles the OnSchedule hooks.
 * 

* Use {@link #enable()} to install the single global RxJavaPlugins handler. * @since 0.18.0 */ public class OnScheduleMultiHandlerManager extends MultiHandlerManager> implements Function, BiConsumer> { /** * Enables this manager by replacing any existing OnSchedule hook in RxJavaPlugins. */ public void enable() { RxJavaPlugins.setScheduleHandler(this); } /** * Disables this manager by restoring a {@code null} OnSchedule hook. */ public void disable() { RxJavaPlugins.setScheduleHandler(null); } /** * Adds the current non-null OnSchedule hook to this handler and replaces it * in RxJavaPlugins with this OnScheduleMultiHandlerManager. */ public void append() { @SuppressWarnings("unchecked") Function existing = (Function)RxJavaPlugins.getScheduleHandler(); if (existing != this) { if (existing != null) { register(existing); } RxJavaPlugins.setScheduleHandler(this); } } @Override public Runnable apply(Runnable t) throws Exception { Runnable[] ref = { t }; forEach(ref, this); return ref[0]; } @Override public void accept(Runnable[] t1, Function t2) throws Throwable { t1[0] = t2.apply(t1[0]); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy