Reduce branching depth
Signed-off-by: Emmanuel Bigeon <emmanuel@bigeon.fr>
This commit is contained in:
parent
6b2a25674d
commit
0cef23e17b
@ -194,14 +194,8 @@ public final class ConnectingConsoleInput implements ConsoleInput {
|
||||
prompting = true;
|
||||
}
|
||||
while (true) {
|
||||
synchronized (promptLock) {
|
||||
if (!prompting) {
|
||||
if (interrupting) {
|
||||
interrupting = false;
|
||||
throw new InterruptedIOException("Prompt was interrupted");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
if (!checkPrompt()) {
|
||||
return null;
|
||||
}
|
||||
getConnection(0);
|
||||
boolean connect;
|
||||
@ -210,25 +204,26 @@ public final class ConnectingConsoleInput implements ConsoleInput {
|
||||
connect = connected != null;
|
||||
actualConnected = connected;
|
||||
}
|
||||
if (connect) {
|
||||
try {
|
||||
final String res = actualConnected.prompt(message);
|
||||
synchronized (promptLock) {
|
||||
if (prompting) {
|
||||
prompting = false;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
} catch (final InterruptedIOException e) {
|
||||
// The inner console was interrupted. This can mean we are
|
||||
// disconnecting or actually interrupted.
|
||||
if (disconnection) {
|
||||
disconnection = false;
|
||||
} else {
|
||||
interrupting = false;
|
||||
throw e;
|
||||
if (!connect) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
final String res = actualConnected.prompt(message);
|
||||
synchronized (promptLock) {
|
||||
if (prompting) {
|
||||
prompting = false;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
} catch (final InterruptedIOException e) {
|
||||
// The inner console was interrupted. This can mean we are
|
||||
// disconnecting or actually interrupted.
|
||||
if (disconnection) {
|
||||
disconnection = false;
|
||||
} else {
|
||||
interrupting = false;
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -245,14 +240,8 @@ public final class ConnectingConsoleInput implements ConsoleInput {
|
||||
}
|
||||
final long end = System.currentTimeMillis() + timeout;
|
||||
do {
|
||||
synchronized (promptLock) {
|
||||
if (!prompting) {
|
||||
if (interrupting) {
|
||||
interrupting = false;
|
||||
throw new InterruptedIOException("Prompt was interrupted");
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (!checkPrompt()) {
|
||||
break;
|
||||
}
|
||||
getConnection(timeout);
|
||||
boolean connect;
|
||||
@ -261,31 +250,48 @@ public final class ConnectingConsoleInput implements ConsoleInput {
|
||||
connect = connected != null;
|
||||
actualConnected = connected;
|
||||
}
|
||||
if (connect) {
|
||||
try {
|
||||
final String res = actualConnected.prompt(message,
|
||||
end - System.currentTimeMillis());
|
||||
synchronized (promptLock) {
|
||||
if (prompting) {
|
||||
prompting = false;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
} catch (final InterruptedIOException e) {
|
||||
// The inner console was interrupted. This can mean we are
|
||||
// disconnecting or actually interrupted.
|
||||
if (disconnection) {
|
||||
disconnection = false;
|
||||
} else {
|
||||
interrupting = false;
|
||||
throw e;
|
||||
if (!connect) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
final String res = actualConnected.prompt(message,
|
||||
end - System.currentTimeMillis());
|
||||
synchronized (promptLock) {
|
||||
if (prompting) {
|
||||
prompting = false;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
} catch (final InterruptedIOException e) {
|
||||
// The inner console was interrupted. This can mean we are
|
||||
// disconnecting or actually interrupted.
|
||||
if (disconnection) {
|
||||
disconnection = false;
|
||||
} else {
|
||||
interrupting = false;
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
} while (System.currentTimeMillis() < end);
|
||||
return null;
|
||||
}
|
||||
|
||||
/** Test if we are in prompting state.
|
||||
*
|
||||
* @return if the process is currently in prompting state.
|
||||
* @throws InterruptedIOException if the prompting state has been interrupted */
|
||||
private boolean checkPrompt() throws InterruptedIOException {
|
||||
synchronized (promptLock) {
|
||||
if (!prompting) {
|
||||
if (interrupting) {
|
||||
interrupting = false;
|
||||
throw new InterruptedIOException("Prompt was interrupted");
|
||||
}
|
||||
}
|
||||
return prompting;
|
||||
}
|
||||
}
|
||||
|
||||
private void getConnection(final long timeout) throws InterruptedIOException {
|
||||
boolean connect;
|
||||
synchronized (connectionLock) {
|
||||
|
Loading…
Reference in New Issue
Block a user