DS-Lab / src / main / java / dslab / rmi / serialize / Executors.java
Executors.java
Raw
package dslab.rmi.serialize;

import dslab.protocol.Protocol;
import dslab.protocol.ProtocolException;
import dslab.protocol.dmap.Dmap;
import dslab.protocol.dmtp.Dmtp;

public class Executors {

    private Executors() {} //don't instantiate

    /**
     * Represents a method call on a protocol instance.
     */
    @FunctionalInterface
    public interface Executor<R, PROTOCOL extends Protocol> {
        R apply(PROTOCOL protocol) throws ProtocolException;
    }

    public interface ThrowingSupplier<R, E extends ProtocolException> {
        R get() throws E;
    }

    @FunctionalInterface
    public interface DmapExecutor<R> extends Executor<R, Dmap> {}

    @FunctionalInterface
    public interface DmtpExecutor<R> extends Executor<R, Dmtp> {}

    @FunctionalInterface
    public interface ThrowingRunnable {
        void run() throws Exception;
    }
}