diff --git a/zond/build.gradle b/zond/build.gradle index c86e4f8..030c805 100644 --- a/zond/build.gradle +++ b/zond/build.gradle @@ -1,5 +1,5 @@ group = 'asys' -version = '0.6.10-SNAPSHOT' +version = '0.6.11-SNAPSHOT' apply plugin: 'application' diff --git a/zond/src/main/java/asys/zond/Main.java b/zond/src/main/java/asys/zond/Main.java index e3cd6d3..af901fb 100644 --- a/zond/src/main/java/asys/zond/Main.java +++ b/zond/src/main/java/asys/zond/Main.java @@ -57,8 +57,10 @@ public class Main { Shell.getInstance().start(System.in, commandLine -> { if (commandLine.equalsIgnoreCase(":exit")) { Shell.getInstance().getOutput().println("force exit"); - watchdog.destroyProcess(); +// watchdog.destroyProcess(); Shell.getInstance().shutdown(); + Main.shutdown(); + return; } pipeInputStream.write(commandLine+"\r\n"); }); @@ -66,17 +68,15 @@ public class Main { Connector.getInstance().startReconnect(); - int resultCode = executeProcess(args, Shell.getInstance().getOutput(), pipeInputStream); +// int resultCode = executeProcess(args, Shell.getInstance().getOutput(), pipeInputStream); - Connector.getInstance().setNeedReconnect(false); - Connector.getInstance().stopReconnect(); - Connector.getInstance().disconnect(); - - Shell.getInstance().shutdown(); - - System.out.println(Ansi.ansi().reset().newline() - .fg(Color.GREEN).a("Process Finished. Code: ") - .bold().fg(Color.WHITE).a(resultCode).reset()); +// Shell.getInstance().shutdown(); +// +// +// int resultCode = -2; +// System.out.println(Ansi.ansi().reset().newline() +// .fg(Color.GREEN).a("Process Finished. Code: ") +// .bold().fg(Color.WHITE).a(resultCode).reset()); } private static int executeProcess(String[] args, PrintStream printStream, InputStream stdin) throws IOException { @@ -120,4 +120,10 @@ public class Main { Config.load(fis); fis.close(); } + + private static void shutdown() { + Connector.getInstance().setNeedReconnect(false); + Connector.getInstance().stopReconnect(); + Connector.getInstance().shutdown(); + } } diff --git a/zond/src/main/java/asys/zond/proxy/Connector.java b/zond/src/main/java/asys/zond/proxy/Connector.java index 7827d49..e41a25b 100644 --- a/zond/src/main/java/asys/zond/proxy/Connector.java +++ b/zond/src/main/java/asys/zond/proxy/Connector.java @@ -54,11 +54,9 @@ public class Connector { } } - public void disconnect() { - if (client.isConnected()) { - log("Disconnect..."); - client.disconnect(); - } + public void shutdown() { + log("Disconnect..."); + client.disconnect(); } public void setChannel(Channel channel) { diff --git a/zond/src/main/java/asys/zond/shell/JlineProxySysOut.java b/zond/src/main/java/asys/zond/shell/JlineProxySysOut.java index 49a164a..2ead4a6 100644 --- a/zond/src/main/java/asys/zond/shell/JlineProxySysOut.java +++ b/zond/src/main/java/asys/zond/shell/JlineProxySysOut.java @@ -18,7 +18,16 @@ public class JlineProxySysOut extends PrintStream { public void setConsoleReader(ConsoleReader consoleReader) { this.consoleReader = consoleReader; - this.writer = new PrintWriter(consoleReader.getOutput()); + if (consoleReader != null) { + this.writer = new PrintWriter(consoleReader.getOutput()); + } else { + try { + super.out.write('\r'); + super.out.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } } private void _print(String s) { @@ -47,12 +56,29 @@ public class JlineProxySysOut extends PrintStream { @Override public void write(byte[] buf, int off, int len) { - if ((char)buf[len-1] == '\n') len--; //TODO проверить в windows - _print(new String(buf, off, len)); + if (consoleReader != null) { + if ((char) buf[len - 1] == '\n') len--; //TODO проверить в windows + _print(new String(buf, off, len)); + } else { + super.write(buf, off, len); + } + } + + @Override + public void print(String x) { + if (consoleReader != null) { + _print(x); + } else { + super.print(x); + } } @Override public void println(String x) { - _print(x); + if (consoleReader != null) { + _print(x); + } else { + super.println(x); + } } } diff --git a/zond/src/main/java/asys/zond/shell/Shell.java b/zond/src/main/java/asys/zond/shell/Shell.java index c9ecbba..0809ca3 100644 --- a/zond/src/main/java/asys/zond/shell/Shell.java +++ b/zond/src/main/java/asys/zond/shell/Shell.java @@ -5,6 +5,7 @@ package asys.zond.shell; import jline.console.ConsoleReader; +import jline.internal.Ansi; import java.io.*; @@ -48,6 +49,7 @@ public class Shell { public void shutdown() { threadCommandHandler.interrupt(); active = false; + proxySysOut.setConsoleReader(null); } public JlineProxySysOut getOutput() {