This commit is contained in:
Redkale
2018-05-18 17:41:51 +08:00
parent 774286952b
commit 6acb17da7c
7 changed files with 53 additions and 6 deletions

View File

@@ -153,7 +153,7 @@ public class Context {
return bufferPool;
}
public Consumer<ByteBuffer> getBufferConsumer() {
protected Consumer<ByteBuffer> 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);

View File

@@ -156,6 +156,10 @@ public abstract class Response<C extends Context, R extends Request<C>> {
return bodyBufferSupplier;
}
protected void offerBuffer(ByteBuffer... buffers) {
context.offerBuffer(buffers);
}
protected AsyncConnection removeChannel() {
AsyncConnection ch = this.channel;
this.channel = null;

View File

@@ -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<ByteBuffer> 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 <H extends CompletionHandler> Creator<H> loadAsyncHandlerCreator(Class<H> handlerClass) {
Creator<H> creator = asyncHandlerCreators.get(handlerClass);

View File

@@ -221,6 +221,11 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
return this.autoOptions;
}
@Override
protected void offerBuffer(ByteBuffer... buffers) {
super.offerBuffer(buffers);
}
/**
* 增加Cookie值
*

View File

@@ -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<WebSocket, Object> messageConsumer, AsyncConnection channel) {
WebSocketRunner(HttpContext context, WebSocket webSocket, BiConsumer<WebSocket, Object> messageConsumer, AsyncConnection channel) {
this.context = context;
this.engine = webSocket._engine;
this.webSocket = webSocket;

View File

@@ -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<ByteBuffer> 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 {
}

View File

@@ -52,6 +52,11 @@ public final class SncpResponse extends Response<SncpContext, SncpRequest> {
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();