Archived
0

Zond: тикер, для замера времени старта сервера

This commit is contained in:
2017-08-13 17:40:11 +03:00
parent ce4e8871aa
commit 7018873758

View File

@@ -26,6 +26,8 @@ public class ZondCommandHandler implements CommandHandler {
private PingMonitor pingMonitor; private PingMonitor pingMonitor;
private boolean flagForceRestartProcess = false; private boolean flagForceRestartProcess = false;
private boolean flagManualKill = false; private boolean flagManualKill = false;
private boolean flagTicker = false;
private Thread threadTicker;
ZondCommandHandler(PipeInputStream proxyStdIn) { ZondCommandHandler(PipeInputStream proxyStdIn) {
this.proxyStdIn = proxyStdIn; this.proxyStdIn = proxyStdIn;
@@ -37,6 +39,22 @@ public class ZondCommandHandler implements CommandHandler {
.reset().toString(); .reset().toString();
} }
private void buildThreadTicker() {
threadTicker = new Thread(() -> {
int sec = 0;
while (!Thread.currentThread().isInterrupted() && flagTicker) {
Shell.getInstance().getOutput().println(zondColored(
Ansi.ansi().fg(Ansi.Color.CYAN).a("Tick "+(sec++)+" sec").toString()
));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
break;
}
}
}, "Thread Ticker");
}
@Override @Override
public void handle(String commandLine) { public void handle(String commandLine) {
if (commandLine.startsWith(":")) { if (commandLine.startsWith(":")) {
@@ -70,6 +88,9 @@ public class ZondCommandHandler implements CommandHandler {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} else if (line.equalsIgnoreCase("ticker")) {
flagTicker = !flagTicker;
Shell.getInstance().getOutput().println(zondColored("Ticker " + (flagTicker?"on":"off")));
} }
} }
@@ -110,12 +131,23 @@ public class ZondCommandHandler implements CommandHandler {
server.start(Config.getInstance().getInt("bridge.port")); server.start(Config.getInstance().getInt("bridge.port"));
deadTime = (System.currentTimeMillis()/1000) + (delay*1000); deadTime = (System.currentTimeMillis()/1000) + (delay*1000);
pingMonitor.start(() -> { Runnable callback;
if (flagTicker) {
callback = () -> {
Shell.getInstance().getOutput().println(zondColored("[!] Process - zobie?"));
};
buildThreadTicker();
threadTicker.start();
} else {
callback = () -> {
Shell.getInstance().getOutput().println(zondColored("[!] Process - zobie?")); Shell.getInstance().getOutput().println(zondColored("[!] Process - zobie?"));
Shell.getInstance().getOutput().println(zondColored("[!] Force shutdown process.")); Shell.getInstance().getOutput().println(zondColored("[!] Force shutdown process."));
flagForceRestartProcess = true; flagForceRestartProcess = true;
killProcess(); killProcess();
}); };
}
pingMonitor.start(callback);
code = executor.execute(commandLine); code = executor.execute(commandLine);
} catch (ExecuteException e) { } catch (ExecuteException e) {
code = e.getExitValue(); code = e.getExitValue();
@@ -133,6 +165,8 @@ public class ZondCommandHandler implements CommandHandler {
if (pingMonitor.isCorrectShutdown()) { if (pingMonitor.isCorrectShutdown()) {
flagForceRestartProcess = false; flagForceRestartProcess = false;
_try = 0; _try = 0;
if (flagTicker)
threadTicker.interrupt();
break; break;
} else { } else {
if (currTime <= deadTime && !flagManualKill) { if (currTime <= deadTime && !flagManualKill) {
@@ -168,6 +202,8 @@ public class ZondCommandHandler implements CommandHandler {
pingMonitor.stop(); pingMonitor.stop();
watchdog.destroyProcess(); watchdog.destroyProcess();
threadExec.interrupt(); threadExec.interrupt();
if (threadTicker != null)
threadTicker.interrupt();
} }
} }
} }