优化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; connection.currRespIterator = null;
readArray.clear(); readArray.clear();
for (ClientResponse<R, P> cr : respResults) { for (ClientResponse<R, P> cr : respResults) {
connection.doneResponseCounter.increment();
if (cr.isError()) { if (cr.isError()) {
connection.dispose(null); connection.dispose(null);
return; return;

View File

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

View File

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