优化client

This commit is contained in:
redkale
2023-02-04 21:20:35 +08:00
parent e9d25a67f8
commit 2751e6475e
3 changed files with 14 additions and 0 deletions

View File

@@ -67,6 +67,7 @@ public abstract class ClientCodec<R extends ClientRequest, P> implements Complet
connection.currRespIterator = null;
readArray.clear();
for (ClientResponse<R, P> cr : respResults) {
connection.doneResponseCounter.increment();
if (cr.isError()) {
connection.dispose(null);
return;

View File

@@ -33,6 +33,10 @@ public abstract class ClientConnection<R extends ClientRequest, P> implements Co
protected final LongAdder respWaitingCounter;
protected final LongAdder doneRequestCounter = new LongAdder();
protected final LongAdder doneResponseCounter = new LongAdder();
final AtomicBoolean pauseWriting = new AtomicBoolean();
final ConcurrentLinkedQueue<ClientFuture> pauseRequests = new ConcurrentLinkedQueue<>();
@@ -187,6 +191,14 @@ public abstract class ClientConnection<R extends ClientRequest, P> implements Co
return channel;
}
public long getDoneRequestCounter() {
return doneRequestCounter.longValue();
}
public long getDoneResponseCounter() {
return doneResponseCounter.longValue();
}
public <C extends ClientCodec<R, P>> C getCodec() {
return (C) codec;
}

View File

@@ -103,6 +103,7 @@ public class ClientWriteIOThread extends AsyncIOThread {
++i;
ClientRequest request = en.request;
request.writeTo(conn, writeArray);
conn.doneRequestCounter.increment();
if (!request.isCompleted()) {
conn.pauseWriting.set(true);
conn.pauseRequests.addAll(list.subList(i, list.size()));