ProtocolCodec优化
This commit is contained in:
@@ -24,6 +24,8 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
|
|||||||
|
|
||||||
private final Consumer<Response> responseConsumer;
|
private final Consumer<Response> responseConsumer;
|
||||||
|
|
||||||
|
private final ReadCompletionHandler readHandler = new ReadCompletionHandler();
|
||||||
|
|
||||||
private AsyncConnection channel;
|
private AsyncConnection channel;
|
||||||
|
|
||||||
private Response resp;
|
private Response resp;
|
||||||
@@ -186,7 +188,27 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
channel.setReadBuffer(buffer);
|
channel.setReadBuffer(buffer);
|
||||||
channel.read(new CompletionHandler<Integer, ByteBuffer>() {
|
channel.read(readHandler.prepare(request, response, pipelineIndex, lastReq));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ReadCompletionHandler implements CompletionHandler<Integer, ByteBuffer> {
|
||||||
|
|
||||||
|
private Request request;
|
||||||
|
|
||||||
|
private Response response;
|
||||||
|
|
||||||
|
private int pipelineIndex;
|
||||||
|
|
||||||
|
private Request lastReq;
|
||||||
|
|
||||||
|
public ReadCompletionHandler prepare(Request request, Response response, int pipelineIndex, Request lastReq) {
|
||||||
|
this.request = request;
|
||||||
|
this.response = response;
|
||||||
|
this.pipelineIndex = pipelineIndex;
|
||||||
|
this.lastReq = lastReq;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void completed(Integer count, ByteBuffer attachment) {
|
public void completed(Integer count, ByteBuffer attachment) {
|
||||||
@@ -208,8 +230,5 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
|
|||||||
request.context.logger.log(Level.FINER, "Servlet read channel erroneous, force to close channel ", exc);
|
request.context.logger.log(Level.FINER, "Servlet read channel erroneous, force to close channel ", exc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user