package com.hammurapi.common.concurrent;

import java.util.concurrent.Future;

/**
 * Synapse is a liaison between invoker and invocable. Synapse iterates over arguments of type
 * ArgumentIterator and can perform invocation asynchronously, potentially in a different process,
 * using provided executor service. Synapse converts arguments to expected argument type if
 * required, chains invocation property sets and controls length of invocation chain to prevent
 * infinite invocations. 
 * @author Pavel Vlasov
 *
 * @param <R>
 */
public interface Synapse<C, R, K, E extends Exception> extends Invoker<C, R, K, E>, Invocable<C, Future<Iterable<R>>, K, E> {

}
