Перенос.
This commit is contained in:
43
src/Repository/Server/DiagnosticSignalHandler.java
Normal file
43
src/Repository/Server/DiagnosticSignalHandler.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package Repository.Server;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import sun.misc.Signal;
|
||||
import sun.misc.SignalHandler;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Date;
|
||||
public class DiagnosticSignalHandler implements SignalHandler {
|
||||
private SignalHandler oldHandler;
|
||||
private SignalHandler handler;
|
||||
public DiagnosticSignalHandler() {
|
||||
}
|
||||
// Static method to install the signal handler
|
||||
public static void install(String signalName, SignalHandler handler) {
|
||||
Signal signal = new Signal(signalName);
|
||||
DiagnosticSignalHandler diagnosticSignalHandler = new DiagnosticSignalHandler();
|
||||
SignalHandler oldHandler = Signal.handle(signal, diagnosticSignalHandler);
|
||||
diagnosticSignalHandler.setHandler(handler);
|
||||
diagnosticSignalHandler.setOldHandler(oldHandler);
|
||||
}
|
||||
private void setOldHandler(SignalHandler oldHandler) {
|
||||
this.oldHandler = oldHandler;
|
||||
}
|
||||
private void setHandler(SignalHandler handler) {
|
||||
this.handler = handler;
|
||||
}
|
||||
// Signal handler method
|
||||
// Signal handler method
|
||||
@Override
|
||||
public void handle(Signal sig) {
|
||||
System.out.println("Diagnostic Signal handler called for signal " + sig);
|
||||
try {
|
||||
FileUtils.writeStringToFile(new File("got SIG" + sig.getName() + " " + new Date().toString().replace(':', '_')), "");
|
||||
handler.handle(sig);
|
||||
// Chain back to previous handler, if one exists
|
||||
if (oldHandler != SIG_DFL && oldHandler != SIG_IGN) {
|
||||
oldHandler.handle(sig);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("Signal handler failed, reason " + e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user