move cleanup to end of message loop

This commit is contained in:
Vaci Koblizek 2020-10-24 16:51:16 +01:00
parent 94ca2a04e6
commit 86ccdd5a55

View file

@ -295,6 +295,10 @@ final class RpcState {
return this.messageLoop;
}
public CompletableFuture<java.lang.Void> onDisconnect() {
return this.messageLoop;
}
CompletableFuture<java.lang.Void> disconnect(Throwable exc) {
if (isDisconnected()) {
return CompletableFuture.failedFuture(this.disconnected);
@ -420,21 +424,20 @@ final class RpcState {
}
private CompletableFuture<java.lang.Void> doMessageLoop() {
this.cleanupImports();
this.cleanupQuestions();
if (isDisconnected()) {
return CompletableFuture.failedFuture(this.disconnected);
}
return connection.receiveIncomingMessage().thenCompose(message -> {
try {
handleMessage(message);
this.handleMessage(message);
} catch (Exception rpcExc) {
// either we received an Abort message from peer
// or internal RpcState is bad.
return this.disconnect(rpcExc);
}
this.cleanupImports();
this.cleanupQuestions();
return this.doMessageLoop();
}).exceptionallyCompose(exc -> this.disconnect(exc));