diff --git a/src/org/redkale/net/Response.java b/src/org/redkale/net/Response.java index 5b0667709..7ad425b42 100644 --- a/src/org/redkale/net/Response.java +++ b/src/org/redkale/net/Response.java @@ -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 { private boolean inited = true; - protected Runnable recycleListener; + protected BiConsumer recycleListener; private final CompletionHandler finishHandler = new CompletionHandler() { @@ -103,7 +104,7 @@ public abstract class Response { 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 { this.request.createtime = System.currentTimeMillis(); } - public void setRecycleListener(Runnable recycleListener) { + public void setRecycleListener(BiConsumer recycleListener) { this.recycleListener = recycleListener; } diff --git a/src/org/redkale/net/http/BasedHttpServlet.java b/src/org/redkale/net/http/BasedHttpServlet.java index 55af43015..c506e89df 100644 --- a/src/org/redkale/net/http/BasedHttpServlet.java +++ b/src/org/redkale/net/http/BasedHttpServlet.java @@ -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 cache; diff --git a/src/org/redkale/net/http/HttpResponse.java b/src/org/redkale/net/http/HttpResponse.java index 9f68f7cab..575714039 100644 --- a/src/org/redkale/net/http/HttpResponse.java +++ b/src/org/redkale/net/http/HttpResponse.java @@ -36,9 +36,10 @@ public class HttpResponse extends Response { /** * 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 extends Response { this.contentLength = contentLength; } - public BufferHandler getBufferHandler() { + protected BufferHandler getBufferHandler() { return bufferHandler; } - public void setBufferHandler(BufferHandler bufferHandler) { + protected void setBufferHandler(BufferHandler bufferHandler) { this.bufferHandler = bufferHandler; }