This commit is contained in:
wentch
2016-01-14 09:56:52 +08:00
parent 794cbac499
commit 85769c06fa
3 changed files with 11 additions and 9 deletions

View File

@@ -7,6 +7,7 @@ package org.redkale.net;
import java.nio.*; import java.nio.*;
import java.nio.channels.*; import java.nio.channels.*;
import java.util.function.*;
/** /**
* *
@@ -27,7 +28,7 @@ public abstract class Response<R extends Request> {
private boolean inited = true; private boolean inited = true;
protected Runnable recycleListener; protected BiConsumer<Request, Response> recycleListener;
private final CompletionHandler finishHandler = new CompletionHandler<Integer, ByteBuffer>() { private final CompletionHandler finishHandler = new CompletionHandler<Integer, ByteBuffer>() {
@@ -103,7 +104,7 @@ public abstract class Response<R extends Request> {
boolean keepAlive = request.keepAlive; boolean keepAlive = request.keepAlive;
if (recycleListener != null) { if (recycleListener != null) {
try { try {
recycleListener.run(); recycleListener.accept(request, this);
} catch (Exception e) { } catch (Exception e) {
System.err.println(request); System.err.println(request);
e.printStackTrace(); e.printStackTrace();
@@ -136,7 +137,7 @@ public abstract class Response<R extends Request> {
this.request.createtime = System.currentTimeMillis(); this.request.createtime = System.currentTimeMillis();
} }
public void setRecycleListener(Runnable recycleListener) { public void setRecycleListener(BiConsumer<Request, Response> recycleListener) {
this.recycleListener = recycleListener; this.recycleListener = recycleListener;
} }

View File

@@ -109,7 +109,7 @@ public abstract class BasedHttpServlet extends HttpServlet {
response.finish(ce.getBuffers()); response.finish(ce.getBuffers());
return; return;
} }
response.setBufferHandler(entry.cacheInterceptor); response.setBufferHandler(entry.cacheHandler);
} }
entry.servlet.execute(request, response); entry.servlet.execute(request, response);
} }
@@ -261,7 +261,7 @@ public abstract class BasedHttpServlet extends HttpServlet {
HttpCacheable hc = method.getAnnotation(HttpCacheable.class); HttpCacheable hc = method.getAnnotation(HttpCacheable.class);
this.cachetimeout = hc == null ? 0 : hc.timeout() * 1000; this.cachetimeout = hc == null ? 0 : hc.timeout() * 1000;
this.cache = cachetimeout > 0 ? new ConcurrentHashMap() : null; 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(); int status = response.getStatus();
if (status != 200) return null; if (status != 200) return null;
CacheEntry ce = new CacheEntry(response.getStatus(), response.getContentType(), buffers); 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; return this.moduleid != 0 || this.actionid != 0;
} }
public final HttpResponse.BufferHandler cacheInterceptor; public final HttpResponse.BufferHandler cacheHandler;
public final ConcurrentHashMap<String, CacheEntry> cache; public final ConcurrentHashMap<String, CacheEntry> cache;

View File

@@ -36,9 +36,10 @@ public class HttpResponse<R extends HttpRequest> extends Response<R> {
/** /**
* HttpResponse.finish 方法内调用 * HttpResponse.finish 方法内调用
* 主要给@HttpCacheable使用
* *
*/ */
public static interface BufferHandler { protected static interface BufferHandler {
public ByteBuffer[] execute(final HttpResponse response, final ByteBuffer[] buffers); 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; this.contentLength = contentLength;
} }
public BufferHandler getBufferHandler() { protected BufferHandler getBufferHandler() {
return bufferHandler; return bufferHandler;
} }
public void setBufferHandler(BufferHandler bufferHandler) { protected void setBufferHandler(BufferHandler bufferHandler) {
this.bufferHandler = bufferHandler; this.bufferHandler = bufferHandler;
} }