This commit is contained in:
@@ -7,6 +7,7 @@ package org.redkale.net;
|
||||
|
||||
import java.nio.*;
|
||||
import java.nio.channels.*;
|
||||
import java.util.function.*;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -27,7 +28,7 @@ public abstract class Response<R extends Request> {
|
||||
|
||||
private boolean inited = true;
|
||||
|
||||
protected Runnable recycleListener;
|
||||
protected BiConsumer<Request, Response> recycleListener;
|
||||
|
||||
private final CompletionHandler finishHandler = new CompletionHandler<Integer, ByteBuffer>() {
|
||||
|
||||
@@ -103,7 +104,7 @@ public abstract class Response<R extends Request> {
|
||||
boolean keepAlive = request.keepAlive;
|
||||
if (recycleListener != null) {
|
||||
try {
|
||||
recycleListener.run();
|
||||
recycleListener.accept(request, this);
|
||||
} catch (Exception e) {
|
||||
System.err.println(request);
|
||||
e.printStackTrace();
|
||||
@@ -136,7 +137,7 @@ public abstract class Response<R extends Request> {
|
||||
this.request.createtime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
public void setRecycleListener(Runnable recycleListener) {
|
||||
public void setRecycleListener(BiConsumer<Request, Response> recycleListener) {
|
||||
this.recycleListener = recycleListener;
|
||||
}
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ public abstract class BasedHttpServlet extends HttpServlet {
|
||||
response.finish(ce.getBuffers());
|
||||
return;
|
||||
}
|
||||
response.setBufferHandler(entry.cacheInterceptor);
|
||||
response.setBufferHandler(entry.cacheHandler);
|
||||
}
|
||||
entry.servlet.execute(request, response);
|
||||
}
|
||||
@@ -261,7 +261,7 @@ public abstract class BasedHttpServlet extends HttpServlet {
|
||||
HttpCacheable hc = method.getAnnotation(HttpCacheable.class);
|
||||
this.cachetimeout = hc == null ? 0 : hc.timeout() * 1000;
|
||||
this.cache = cachetimeout > 0 ? new ConcurrentHashMap() : null;
|
||||
this.cacheInterceptor = cachetimeout > 0 ? (HttpResponse response, ByteBuffer[] buffers) -> {
|
||||
this.cacheHandler = cachetimeout > 0 ? (HttpResponse response, ByteBuffer[] buffers) -> {
|
||||
int status = response.getStatus();
|
||||
if (status != 200) return null;
|
||||
CacheEntry ce = new CacheEntry(response.getStatus(), response.getContentType(), buffers);
|
||||
@@ -274,7 +274,7 @@ public abstract class BasedHttpServlet extends HttpServlet {
|
||||
return this.moduleid != 0 || this.actionid != 0;
|
||||
}
|
||||
|
||||
public final HttpResponse.BufferHandler cacheInterceptor;
|
||||
public final HttpResponse.BufferHandler cacheHandler;
|
||||
|
||||
public final ConcurrentHashMap<String, CacheEntry> cache;
|
||||
|
||||
|
||||
@@ -36,9 +36,10 @@ public class HttpResponse<R extends HttpRequest> extends Response<R> {
|
||||
|
||||
/**
|
||||
* HttpResponse.finish 方法内调用
|
||||
* 主要给@HttpCacheable使用
|
||||
*
|
||||
*/
|
||||
public static interface BufferHandler {
|
||||
protected static interface BufferHandler {
|
||||
|
||||
public ByteBuffer[] execute(final HttpResponse response, final ByteBuffer[] buffers);
|
||||
}
|
||||
@@ -504,11 +505,11 @@ public class HttpResponse<R extends HttpRequest> extends Response<R> {
|
||||
this.contentLength = contentLength;
|
||||
}
|
||||
|
||||
public BufferHandler getBufferHandler() {
|
||||
protected BufferHandler getBufferHandler() {
|
||||
return bufferHandler;
|
||||
}
|
||||
|
||||
public void setBufferHandler(BufferHandler bufferHandler) {
|
||||
protected void setBufferHandler(BufferHandler bufferHandler) {
|
||||
this.bufferHandler = bufferHandler;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user