From 349deaa837ee62c4b20fa3ff535c64dc601f3fc1 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Wed, 14 Jun 2017 17:39:48 +0300 Subject: [PATCH] =?UTF-8?q?Zond:=20=D0=BD=D0=B5=D1=81=D0=BA=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=BA=D0=BE=20=D1=84=D0=B8=D0=BA=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zond/build.gradle | 2 +- zond/src/main/java/asys/zond/Main.java | 28 +++++++++------ .../main/java/asys/zond/proxy/Connector.java | 8 ++--- .../asys/zond/shell/JlineProxySysOut.java | 34 ++++++++++++++++--- zond/src/main/java/asys/zond/shell/Shell.java | 2 ++ 5 files changed, 53 insertions(+), 21 deletions(-) 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() {