This commit is contained in:
@@ -109,7 +109,7 @@ public abstract class BasedHttpServlet extends HttpServlet {
|
|||||||
response.finish(ce.getBuffers());
|
response.finish(ce.getBuffers());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
response.setInterceptor(entry.cacheInterceptor);
|
response.setBufferHandler(entry.cacheInterceptor);
|
||||||
}
|
}
|
||||||
entry.servlet.execute(request, response);
|
entry.servlet.execute(request, response);
|
||||||
}
|
}
|
||||||
@@ -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.Interceptor cacheInterceptor;
|
public final HttpResponse.BufferHandler cacheInterceptor;
|
||||||
|
|
||||||
public final ConcurrentHashMap<String, CacheEntry> cache;
|
public final ConcurrentHashMap<String, CacheEntry> cache;
|
||||||
|
|
||||||
|
|||||||
@@ -38,9 +38,9 @@ public class HttpResponse<R extends HttpRequest> extends Response<R> {
|
|||||||
* HttpResponse.finish 方法内调用
|
* HttpResponse.finish 方法内调用
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static interface Interceptor {
|
public static interface BufferHandler {
|
||||||
|
|
||||||
public ByteBuffer[] invoke(final HttpResponse response, final ByteBuffer[] buffers);
|
public ByteBuffer[] execute(final HttpResponse response, final ByteBuffer[] buffers);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final ByteBuffer buffer304 = ByteBuffer.wrap("HTTP/1.1 304 Not Modified\r\n\r\n".getBytes()).asReadOnlyBuffer();
|
private static final ByteBuffer buffer304 = ByteBuffer.wrap("HTTP/1.1 304 Not Modified\r\n\r\n".getBytes()).asReadOnlyBuffer();
|
||||||
@@ -115,7 +115,7 @@ public class HttpResponse<R extends HttpRequest> extends Response<R> {
|
|||||||
|
|
||||||
private boolean headsended = false;
|
private boolean headsended = false;
|
||||||
|
|
||||||
private Interceptor interceptor;
|
private BufferHandler bufferHandler;
|
||||||
//------------------------------------------------
|
//------------------------------------------------
|
||||||
|
|
||||||
private final DefaultAnyValue header = new DefaultAnyValue();
|
private final DefaultAnyValue header = new DefaultAnyValue();
|
||||||
@@ -150,7 +150,7 @@ public class HttpResponse<R extends HttpRequest> extends Response<R> {
|
|||||||
this.cookies = null;
|
this.cookies = null;
|
||||||
this.headsended = false;
|
this.headsended = false;
|
||||||
this.header.clear();
|
this.header.clear();
|
||||||
this.interceptor = null;
|
this.bufferHandler = null;
|
||||||
return super.recycle();
|
return super.recycle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -221,8 +221,8 @@ public class HttpResponse<R extends HttpRequest> extends Response<R> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (context.getCharset() == null) {
|
if (context.getCharset() == null) {
|
||||||
if (interceptor != null) {
|
if (bufferHandler != null) {
|
||||||
interceptor.invoke(this, new ByteBuffer[]{ByteBuffer.wrap(Utility.encodeUTF8(obj))});
|
bufferHandler.execute(this, new ByteBuffer[]{ByteBuffer.wrap(Utility.encodeUTF8(obj))});
|
||||||
}
|
}
|
||||||
final char[] chars = Utility.charArray(obj);
|
final char[] chars = Utility.charArray(obj);
|
||||||
this.contentLength = Utility.encodeUTF8Length(chars);
|
this.contentLength = Utility.encodeUTF8Length(chars);
|
||||||
@@ -236,8 +236,8 @@ public class HttpResponse<R extends HttpRequest> extends Response<R> {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ByteBuffer buffer = context.getCharset().encode(obj);
|
ByteBuffer buffer = context.getCharset().encode(obj);
|
||||||
if (interceptor != null) {
|
if (bufferHandler != null) {
|
||||||
ByteBuffer[] bufs = interceptor.invoke(this, new ByteBuffer[]{buffer});
|
ByteBuffer[] bufs = bufferHandler.execute(this, new ByteBuffer[]{buffer});
|
||||||
if (bufs != null) buffer = bufs[0];
|
if (bufs != null) buffer = bufs[0];
|
||||||
}
|
}
|
||||||
this.contentLength = buffer.remaining();
|
this.contentLength = buffer.remaining();
|
||||||
@@ -289,8 +289,8 @@ public class HttpResponse<R extends HttpRequest> extends Response<R> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void finish(boolean kill, ByteBuffer... buffers) {
|
public void finish(boolean kill, ByteBuffer... buffers) {
|
||||||
if (interceptor != null) {
|
if (bufferHandler != null) {
|
||||||
ByteBuffer[] bufs = interceptor.invoke(this, buffers);
|
ByteBuffer[] bufs = bufferHandler.execute(this, buffers);
|
||||||
if (bufs != null) buffers = bufs;
|
if (bufs != null) buffers = bufs;
|
||||||
}
|
}
|
||||||
if (kill) refuseAlive();
|
if (kill) refuseAlive();
|
||||||
@@ -504,12 +504,12 @@ public class HttpResponse<R extends HttpRequest> extends Response<R> {
|
|||||||
this.contentLength = contentLength;
|
this.contentLength = contentLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Interceptor getInterceptor() {
|
public BufferHandler getBufferHandler() {
|
||||||
return interceptor;
|
return bufferHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInterceptor(Interceptor interceptor) {
|
public void setBufferHandler(BufferHandler bufferHandler) {
|
||||||
this.interceptor = interceptor;
|
this.bufferHandler = bufferHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final class TransferFileHandler implements CompletionHandler<Integer, ByteBuffer> {
|
protected final class TransferFileHandler implements CompletionHandler<Integer, ByteBuffer> {
|
||||||
|
|||||||
Reference in New Issue
Block a user