diff --git a/net/src/main/java/com/zfoo/net/router/IRouter.java b/net/src/main/java/com/zfoo/net/router/IRouter.java index e5af9f8a..c4433b57 100644 --- a/net/src/main/java/com/zfoo/net/router/IRouter.java +++ b/net/src/main/java/com/zfoo/net/router/IRouter.java @@ -58,4 +58,6 @@ public interface IRouter { AsyncAnswer asyncAsk(Session session, Object packet, @Nullable Class answerClass, @Nullable Object argument); + AsyncAnswer asyncAsk(Session session, Object packet, @Nullable Class answerClass, @Nullable Object argument, long timeoutMillis); + } diff --git a/net/src/main/java/com/zfoo/net/router/Router.java b/net/src/main/java/com/zfoo/net/router/Router.java index 3b04a8da..94fa2e77 100644 --- a/net/src/main/java/com/zfoo/net/router/Router.java +++ b/net/src/main/java/com/zfoo/net/router/Router.java @@ -264,6 +264,11 @@ public class Router implements IRouter { */ @Override public AsyncAnswer asyncAsk(Session session, Object packet, @Nullable Class answerClass, @Nullable Object argument) { + return asyncAsk(session, packet, answerClass, argument, DEFAULT_TIMEOUT); + } + + @Override + public AsyncAnswer asyncAsk(Session session, Object packet, Class answerClass, Object argument, long timeoutMillis) { var clientSignalAttachment = new SignalAttachment(); if (argument == null) { @@ -281,7 +286,7 @@ public class Router implements IRouter { asyncAnswer.setSignalAttachment(clientSignalAttachment); clientSignalAttachment.getResponseFuture() - .completeOnTimeout(null, DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS) // 因此超时的情况,返回的是null + .completeOnTimeout(null, timeoutMillis, TimeUnit.MILLISECONDS) // 因此超时的情况,返回的是null .thenApply(answer -> { if (answer == null) { throw new NetTimeOutException("async ask [{}] timeout exception", packet.getClass().getSimpleName());