package org.gcube.common.clients.delegates; import org.gcube.common.clients.Call; import org.gcube.common.clients.config.ProxyConfig; /** * Makes {@link Call}s to service endpoints on behalf a service proxy. *

* Delegates obtain the addresses of service endpoints according to some strategy, using information * found in their {@link ProxyConfig}. * * @author Fabio Simeoni * * @param the type of service stubs * * @see Call */ public interface ProxyDelegate { /** * Makes a {@link Call} to a given service endpoint. * * @param call the call * @param the type of the value returned from the call * @return the value returned from the call * @throws Exception if the call fails * */ V make(Call call) throws Exception; /** * Returns the configuration of the proxy. * @return the configuration */ ProxyConfig config(); }