diff --git a/src/org/redkale/net/Context.java b/src/org/redkale/net/Context.java index eceab2250..7178c4483 100644 --- a/src/org/redkale/net/Context.java +++ b/src/org/redkale/net/Context.java @@ -153,7 +153,7 @@ public class Context { return bufferPool; } - public Consumer getBufferConsumer() { + protected Consumer getBufferConsumer() { return bufferPool; } @@ -161,11 +161,11 @@ public class Context { return bufferPool.get(); } - public void offerBuffer(ByteBuffer buffer) { + protected void offerBuffer(ByteBuffer buffer) { bufferPool.accept(buffer); } - public void offerBuffer(ByteBuffer... buffers) { + protected void offerBuffer(ByteBuffer... buffers) { if (buffers == null) return; for (ByteBuffer buffer : buffers) { bufferPool.accept(buffer); diff --git a/src/org/redkale/net/Response.java b/src/org/redkale/net/Response.java index 34abf6b35..9ffef1604 100644 --- a/src/org/redkale/net/Response.java +++ b/src/org/redkale/net/Response.java @@ -156,6 +156,10 @@ public abstract class Response> { return bodyBufferSupplier; } + protected void offerBuffer(ByteBuffer... buffers) { + context.offerBuffer(buffers); + } + protected AsyncConnection removeChannel() { AsyncConnection ch = this.channel; this.channel = null; diff --git a/src/org/redkale/net/http/HttpContext.java b/src/org/redkale/net/http/HttpContext.java index ea0309473..550ccfd21 100644 --- a/src/org/redkale/net/http/HttpContext.java +++ b/src/org/redkale/net/http/HttpContext.java @@ -5,10 +5,12 @@ */ package org.redkale.net.http; +import java.nio.ByteBuffer; import org.redkale.asm.MethodDebugVisitor; import java.nio.channels.CompletionHandler; import java.security.*; import java.util.concurrent.*; +import java.util.function.*; import org.redkale.asm.*; import static org.redkale.asm.Opcodes.*; import org.redkale.net.*; @@ -47,6 +49,21 @@ public class HttpContext extends Context { return responsePool; } + @Override + protected Consumer getBufferConsumer() { + return super.getBufferConsumer(); + } + + @Override + protected void offerBuffer(ByteBuffer buffer) { + super.offerBuffer(buffer); + } + + @Override + protected void offerBuffer(ByteBuffer... buffers) { + super.offerBuffer(buffers); + } + @SuppressWarnings("unchecked") protected Creator loadAsyncHandlerCreator(Class handlerClass) { Creator creator = asyncHandlerCreators.get(handlerClass); diff --git a/src/org/redkale/net/http/HttpResponse.java b/src/org/redkale/net/http/HttpResponse.java index 7a24f4a4e..6446dd70f 100644 --- a/src/org/redkale/net/http/HttpResponse.java +++ b/src/org/redkale/net/http/HttpResponse.java @@ -221,6 +221,11 @@ public class HttpResponse extends Response { return this.autoOptions; } + @Override + protected void offerBuffer(ByteBuffer... buffers) { + super.offerBuffer(buffers); + } + /** * 增加Cookie值 * diff --git a/src/org/redkale/net/http/WebSocketRunner.java b/src/org/redkale/net/http/WebSocketRunner.java index 727f61b6f..24d2ed324 100644 --- a/src/org/redkale/net/http/WebSocketRunner.java +++ b/src/org/redkale/net/http/WebSocketRunner.java @@ -6,7 +6,6 @@ package org.redkale.net.http; import org.redkale.net.AsyncConnection; -import org.redkale.net.Context; import static org.redkale.net.http.WebSocket.*; import org.redkale.net.http.WebSocketPacket.FrameType; import java.nio.ByteBuffer; @@ -34,7 +33,7 @@ class WebSocketRunner implements Runnable { private final WebSocket webSocket; - protected final Context context; + protected final HttpContext context; private ByteBuffer readBuffer; @@ -50,7 +49,7 @@ class WebSocketRunner implements Runnable { protected long lastReadTime; - WebSocketRunner(Context context, WebSocket webSocket, BiConsumer messageConsumer, AsyncConnection channel) { + WebSocketRunner(HttpContext context, WebSocket webSocket, BiConsumer messageConsumer, AsyncConnection channel) { this.context = context; this.engine = webSocket._engine; this.webSocket = webSocket; diff --git a/src/org/redkale/net/sncp/SncpContext.java b/src/org/redkale/net/sncp/SncpContext.java index 5a58b914e..7abf4bb35 100644 --- a/src/org/redkale/net/sncp/SncpContext.java +++ b/src/org/redkale/net/sncp/SncpContext.java @@ -5,6 +5,8 @@ */ package org.redkale.net.sncp; +import java.nio.ByteBuffer; +import java.util.function.*; import org.redkale.net.*; /** @@ -19,6 +21,21 @@ public class SncpContext extends Context { super(config); } + @Override + protected Consumer getBufferConsumer() { + return super.getBufferConsumer(); + } + + @Override + protected void offerBuffer(ByteBuffer buffer) { + super.offerBuffer(buffer); + } + + @Override + protected void offerBuffer(ByteBuffer... buffers) { + super.offerBuffer(buffers); + } + public static class SncpContextConfig extends ContextConfig { } diff --git a/src/org/redkale/net/sncp/SncpResponse.java b/src/org/redkale/net/sncp/SncpResponse.java index 9227b1ba8..3938e925f 100644 --- a/src/org/redkale/net/sncp/SncpResponse.java +++ b/src/org/redkale/net/sncp/SncpResponse.java @@ -52,6 +52,11 @@ public final class SncpResponse extends Response { if (this.addrBytes.length != 4) throw new RuntimeException("SNCP serverAddress only support IPv4"); } + @Override + protected void offerBuffer(ByteBuffer... buffers) { + super.offerBuffer(buffers); + } + public void finish(final int retcode, final BsonWriter out) { if (out == null) { final ByteBuffer buffer = pollWriteReadBuffer();