keepAlive
This commit is contained in:
@@ -73,6 +73,7 @@ public abstract class ClientCodec<R extends ClientRequest, P extends ClientResul
|
|||||||
if (!respResults.isEmpty()) { //存在解析结果
|
if (!respResults.isEmpty()) { //存在解析结果
|
||||||
connection.currRespIterator = null;
|
connection.currRespIterator = null;
|
||||||
readArray.clear();
|
readArray.clear();
|
||||||
|
boolean keepAlive = true;
|
||||||
for (ClientResponse<R, P> cr : respResults) {
|
for (ClientResponse<R, P> cr : respResults) {
|
||||||
connection.doneResponseCounter.increment();
|
connection.doneResponseCounter.increment();
|
||||||
if (cr.isError()) {
|
if (cr.isError()) {
|
||||||
@@ -89,15 +90,20 @@ public abstract class ClientCodec<R extends ClientRequest, P extends ClientResul
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
responseComplete(false, respFuture, cr.message, cr.cause);
|
responseComplete(false, respFuture, cr.message, cr.cause);
|
||||||
|
if (cr.message != null && !cr.message.isKeepAlive()) {
|
||||||
|
keepAlive = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
respPool.accept(cr);
|
respPool.accept(cr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
respResults.clear();
|
respResults.clear();
|
||||||
|
if (!keepAlive) {
|
||||||
|
connection.dispose(null);
|
||||||
|
}
|
||||||
if (buffer.hasRemaining()) { //还有响应数据包
|
if (buffer.hasRemaining()) { //还有响应数据包
|
||||||
decodeResponse(buffer);
|
decodeResponse(buffer);
|
||||||
} else { //队列都已处理完了
|
} else if (keepAlive) { //队列都已处理完了
|
||||||
buffer.clear();
|
buffer.clear();
|
||||||
channel.setReadBuffer(buffer);
|
channel.setReadBuffer(buffer);
|
||||||
channel.readRegister(this);
|
channel.readRegister(this);
|
||||||
@@ -166,9 +172,6 @@ public abstract class ClientCodec<R extends ClientRequest, P extends ClientResul
|
|||||||
Traces.removeTraceid();
|
Traces.removeTraceid();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (!message.isKeepAlive()) {
|
|
||||||
connection.dispose(null);
|
|
||||||
}
|
|
||||||
} else { //异常
|
} else { //异常
|
||||||
if (workThread == null) {
|
if (workThread == null) {
|
||||||
readThread.runWork(() -> {
|
readThread.runWork(() -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user