Fork自 嗝屁小孩纸 / guide-rpc-framework
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
package github.javaguide.remoting.transport.netty.client; import github.javaguide.remoting.dto.RpcResponse; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; /** * 未处理的请求。 * * @author shuang.kou * @createTime 2020年06月04日 17:30:00 */ public class UnprocessedRequests { private static ConcurrentHashMap<String, CompletableFuture<RpcResponse>> unprocessedResponseFutures = new ConcurrentHashMap<>(); public void put(String requestId, CompletableFuture<RpcResponse> future) { unprocessedResponseFutures.put(requestId, future); } public void remove(String requestId) { unprocessedResponseFutures.remove(requestId); } public void complete(RpcResponse rpcResponse) { CompletableFuture<RpcResponse> future = unprocessedResponseFutures.remove(rpcResponse.getRequestId()); if (null != future) { future.complete(rpcResponse); } else { throw new IllegalStateException(); } } }