From d77f4245046dcd9a17a9384d38526cea52cf4b05 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Sat, 25 Feb 2017 12:27:19 +0800 Subject: [PATCH] --- src/org/redkale/net/Response.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/org/redkale/net/Response.java b/src/org/redkale/net/Response.java index c69875892..8636b2f1e 100644 --- a/src/org/redkale/net/Response.java +++ b/src/org/redkale/net/Response.java @@ -31,7 +31,7 @@ public abstract class Response> { protected Object output; //输出的结果对象 - protected BiConsumer> recycleListener; + protected BiConsumer> recycleListener; private final CompletionHandler finishHandler = new CompletionHandler() { @@ -56,29 +56,26 @@ public abstract class Response> { private final CompletionHandler finishHandler2 = new CompletionHandler() { @Override - public void completed(Integer result, ByteBuffer[] attachments) { + public void completed(final Integer result, final ByteBuffer[] attachments) { int index = -1; for (int i = 0; i < attachments.length; i++) { if (attachments[i].hasRemaining()) { index = i; break; - } else { - context.offerBuffer(attachments[i]); } } - if (index == 0) { - channel.write(attachments, attachments, this); - } else if (index > 0) { - ByteBuffer[] newattachs = new ByteBuffer[attachments.length - index]; - System.arraycopy(attachments, index, newattachs, 0, newattachs.length); - channel.write(newattachs, newattachs, this); + if (index >= 0) { + channel.write(attachments, index, attachments.length - index, attachments, this); } else { + for (ByteBuffer attachment : attachments) { + context.offerBuffer(attachment); + } finish(); } } @Override - public void failed(Throwable exc, ByteBuffer[] attachments) { + public void failed(Throwable exc, final ByteBuffer[] attachments) { for (ByteBuffer attachment : attachments) { context.offerBuffer(attachment); }