package tech.powerjob.remote.framework.transporter; import tech.powerjob.common.PowerSerializable; import tech.powerjob.remote.framework.base.RemotingException; import tech.powerjob.remote.framework.base.URL; import java.util.concurrent.CompletionStage; import java.util.concurrent.ExecutorService; /** * 通讯器,封装与远程服务端交互逻辑 * * @author tjq * @since 2022/12/31 */ public interface Transporter { /** * Protocol * @return return protocol */ Protocol getProtocol(); /** *send message * @param url url * @param request request */ void tell(URL url, PowerSerializable request); /** * ask by request * @param url url * @param request request * @param clz response type * @return CompletionStage * @throws RemotingException remote exception */ CompletionStage ask(URL url, PowerSerializable request, Class clz) throws RemotingException; }