ProtocolCodec优化

This commit is contained in:
redkale
2023-01-30 10:49:55 +08:00
parent 4b70e19211
commit d428c58e15

View File

@@ -24,6 +24,8 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
private final Consumer<Response> responseConsumer;
private final ReadCompletionHandler readHandler = new ReadCompletionHandler();
private AsyncConnection channel;
private Response resp;
@@ -186,7 +188,27 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
}
} else {
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
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);
}
}
});
}
}
}