From bcbd981a9b83ca986a6ae2369a5398106b7c6e0a Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Fri, 21 Dec 2018 10:55:20 +0800 Subject: [PATCH] --- src/org/redkale/net/PrepareRunner.java | 11 ++++++----- src/org/redkale/net/TcpAioProtocolServer.java | 11 ++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/org/redkale/net/PrepareRunner.java b/src/org/redkale/net/PrepareRunner.java index 5bddbd827..4422d612a 100644 --- a/src/org/redkale/net/PrepareRunner.java +++ b/src/org/redkale/net/PrepareRunner.java @@ -47,7 +47,7 @@ public class PrepareRunner implements Runnable { if (response == null) response = responsePool.get(); try { response.init(channel); - prepare(data, response.request, response); + codec(data, response); } catch (Throwable t) { context.logger.log(Level.WARNING, "prepare servlet abort, force to close channel ", t); response.finish(true); @@ -56,7 +56,7 @@ public class PrepareRunner implements Runnable { } if (response == null) response = responsePool.get(); try { - channel.read(keepalive ? context.getAliveTimeoutSeconds() : 0, TimeUnit.SECONDS, + channel.read(keepalive ? context.getAliveTimeoutSeconds() : context.getReadTimeoutSeconds(), TimeUnit.SECONDS, new CompletionHandler() { @Override public void completed(Integer count, ByteBuffer buffer) { @@ -74,9 +74,9 @@ public class PrepareRunner implements Runnable { // System.println(new String(bs)); // } buffer.flip(); - response.init(channel); try { - prepare(buffer, response.request, response); + response.init(channel); + codec(buffer, response); } catch (Throwable t) { //此处不可 context.offerBuffer(buffer); 以免prepare.prepare内部异常导致重复 offerBuffer context.logger.log(Level.WARNING, "prepare servlet abort, force to close channel ", t); response.finish(true); @@ -104,7 +104,8 @@ public class PrepareRunner implements Runnable { } } - protected void prepare(final ByteBuffer buffer, final Request request, final Response response) throws IOException { + protected void codec(final ByteBuffer buffer, final Response response) throws IOException { + final Request request = response.request; final PrepareServlet preparer = context.prepare; preparer.executeCounter.incrementAndGet(); final int rs = request.readHeader(buffer); diff --git a/src/org/redkale/net/TcpAioProtocolServer.java b/src/org/redkale/net/TcpAioProtocolServer.java index 5e964d45c..f5f582808 100644 --- a/src/org/redkale/net/TcpAioProtocolServer.java +++ b/src/org/redkale/net/TcpAioProtocolServer.java @@ -92,12 +92,13 @@ public class TcpAioProtocolServer extends ProtocolServer { channel.setOption(StandardSocketOptions.SO_REUSEADDR, true); channel.setOption(StandardSocketOptions.SO_RCVBUF, 16 * 1024); channel.setOption(StandardSocketOptions.SO_SNDBUF, 16 * 1024); - } catch (IOException e) { - context.logger.log(Level.INFO, channel + " setOption error", e); + + AsyncConnection conn = new TcpAioAsyncConnection(context.getBufferSupplier(), context.getBufferConsumer(), channel, + context.getSSLContext(), null, context.readTimeoutSeconds, context.writeTimeoutSeconds, livingCounter, closedCounter); + context.runAsync(new PrepareRunner(context, conn, null, null)); + } catch (Throwable e) { + context.logger.log(Level.INFO, channel + " accept error", e); } - AsyncConnection conn = new TcpAioAsyncConnection(context.getBufferSupplier(), context.getBufferConsumer(), channel, - context.getSSLContext(), null, context.readTimeoutSeconds, context.writeTimeoutSeconds, livingCounter, closedCounter); - context.runAsync(new PrepareRunner(context, conn, null, null)); } @Override