Zond: тикер, для замера времени старта сервера
This commit is contained in:
@@ -26,6 +26,8 @@ public class ZondCommandHandler implements CommandHandler {
|
||||
private PingMonitor pingMonitor;
|
||||
private boolean flagForceRestartProcess = false;
|
||||
private boolean flagManualKill = false;
|
||||
private boolean flagTicker = false;
|
||||
private Thread threadTicker;
|
||||
|
||||
ZondCommandHandler(PipeInputStream proxyStdIn) {
|
||||
this.proxyStdIn = proxyStdIn;
|
||||
@@ -37,6 +39,22 @@ public class ZondCommandHandler implements CommandHandler {
|
||||
.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
|
||||
public void handle(String commandLine) {
|
||||
if (commandLine.startsWith(":")) {
|
||||
@@ -70,6 +88,9 @@ public class ZondCommandHandler implements CommandHandler {
|
||||
} catch (IOException e) {
|
||||
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"));
|
||||
|
||||
deadTime = (System.currentTimeMillis()/1000) + (delay*1000);
|
||||
pingMonitor.start(() -> {
|
||||
Shell.getInstance().getOutput().println(zondColored("[!] Process - zobie?"));
|
||||
Shell.getInstance().getOutput().println(zondColored("[!] Force shutdown process."));
|
||||
flagForceRestartProcess = true;
|
||||
killProcess();
|
||||
});
|
||||
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("[!] Force shutdown process."));
|
||||
flagForceRestartProcess = true;
|
||||
killProcess();
|
||||
};
|
||||
}
|
||||
pingMonitor.start(callback);
|
||||
code = executor.execute(commandLine);
|
||||
} catch (ExecuteException e) {
|
||||
code = e.getExitValue();
|
||||
@@ -133,6 +165,8 @@ public class ZondCommandHandler implements CommandHandler {
|
||||
if (pingMonitor.isCorrectShutdown()) {
|
||||
flagForceRestartProcess = false;
|
||||
_try = 0;
|
||||
if (flagTicker)
|
||||
threadTicker.interrupt();
|
||||
break;
|
||||
} else {
|
||||
if (currTime <= deadTime && !flagManualKill) {
|
||||
@@ -168,6 +202,8 @@ public class ZondCommandHandler implements CommandHandler {
|
||||
pingMonitor.stop();
|
||||
watchdog.destroyProcess();
|
||||
threadExec.interrupt();
|
||||
if (threadTicker != null)
|
||||
threadTicker.interrupt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user