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

io.github.matzoliv.asyncchannel.implementation.AltHandler Maven / Gradle / Ivy

The newest version!
//   Copyright (c) Olivier Matz, Rich Hickey and contributors. All rights reserved.
//   The use and distribution terms for this software are covered by the
//   Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
//   which can be found in the file epl-v10.html at the root of this distribution.
//   By using this software in any fashion, you are agreeing to be bound by
//   the terms of this license.
//   You must not remove this notice, or any other, from this software.

package io.github.matzoliv.asyncchannel.implementation;

import java.util.function.Consumer;

import io.github.matzoliv.asyncchannel.Handler;

public class AltHandler implements Handler {

    private final Consumer callback;
    private Handler underlying;

    public AltHandler(Handler underlying, Consumer callback) {
        this.underlying = underlying;
        this.callback = callback;
    }

    @Override
    public boolean isActive() {
        return underlying.isActive();
    }

    @Override
    public void lock() {
        underlying.lock();
    }

    @Override
    public void unlock() {
        underlying.unlock();
    }

    @Override
    public Consumer commit() {
        if (underlying.commit() != null) {
            return callback;
        } else {
            return null;
        }
    }

    @Override
    public long getLockId() {
        return underlying.getLockId();
    }

    @Override
    public boolean isBlockable() { return underlying.isBlockable(); }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy