Zond: тикер, для замера времени старта сервера
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user