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; } }