< prev index next >

src/jdk.unsupported/share/classes/sun/misc/Signal.java

Print this page

        

*** 23,33 **** * questions. */ package sun.misc; ! import java.util.Objects; /** * This class provides ANSI/ISO C signal support. A Java program can register * signal handlers for the current process. There are two restrictions: * <ul> --- 23,33 ---- * questions. */ package sun.misc; ! import jdk.internal.unsupported.SignalDelegate; /** * This class provides ANSI/ISO C signal support. A Java program can register * signal handlers for the current process. There are two restrictions: * <ul>
*** 72,83 **** * @see sun.misc.SignalHandler * @since 1.2 */ public final class Signal { ! // Delegate to jdk.internal.misc.Signal. ! private final jdk.internal.misc.Signal iSignal; /* Returns the signal number */ public int getNumber() { return iSignal.getNumber(); } --- 72,82 ---- * @see sun.misc.SignalHandler * @since 1.2 */ public final class Signal { ! private final SignalDelegate iSignal; /* Returns the signal number */ public int getNumber() { return iSignal.getNumber(); }
*** 134,144 **** * @param name the name of the signal. * @exception IllegalArgumentException unknown signal * @see sun.misc.Signal#getName() */ public Signal(String name) { ! iSignal = new jdk.internal.misc.Signal(name); } /** * Registers a signal handler. * --- 133,143 ---- * @param name the name of the signal. * @exception IllegalArgumentException unknown signal * @see sun.misc.Signal#getName() */ public Signal(String name) { ! iSignal = new SignalDelegate(name); } /** * Registers a signal handler. *
*** 152,226 **** * @see sun.misc.SignalHandler#SIG_IGN */ public static synchronized SignalHandler handle(Signal sig, SignalHandler handler) throws IllegalArgumentException { ! jdk.internal.misc.Signal.Handler oldHandler = jdk.internal.misc.Signal.handle(sig.iSignal, ! InternalMiscHandler.of(sig, handler)); return SunMiscHandler.of(sig.iSignal, oldHandler); } /** * Raises a signal in the current process. * * @param sig a signal * @see sun.misc.Signal#handle(Signal sig, SignalHandler handler) */ public static void raise(Signal sig) throws IllegalArgumentException { ! jdk.internal.misc.Signal.raise(sig.iSignal); } /* ! * Wrapper class to proxy a SignalHandler to a jdk.internal.misc.Signal.Handler. */ ! static final class InternalMiscHandler implements jdk.internal.misc.Signal.Handler { private final SignalHandler handler; private final Signal signal; ! static jdk.internal.misc.Signal.Handler of(Signal signal, SignalHandler handler) { if (handler == SignalHandler.SIG_DFL) { ! return jdk.internal.misc.Signal.Handler.SIG_DFL; } else if (handler == SignalHandler.SIG_IGN) { ! return jdk.internal.misc.Signal.Handler.SIG_IGN; } else if (handler instanceof SunMiscHandler) { return ((SunMiscHandler)handler).iHandler; } else { ! return new InternalMiscHandler(signal, handler); } } ! private InternalMiscHandler(Signal signal, SignalHandler handler) { this.handler = handler; this.signal = signal; } @Override ! public void handle(jdk.internal.misc.Signal ignore) { handler.handle(signal); } } /* ! * Wrapper class to proxy a jdk.internal.misc.Signal.Handler to a SignalHandler. */ static final class SunMiscHandler implements SignalHandler { ! private final jdk.internal.misc.Signal iSignal; ! private final jdk.internal.misc.Signal.Handler iHandler; ! static SignalHandler of(jdk.internal.misc.Signal signal, jdk.internal.misc.Signal.Handler handler) { ! if (handler == jdk.internal.misc.Signal.Handler.SIG_DFL) { return SignalHandler.SIG_DFL; ! } else if (handler == jdk.internal.misc.Signal.Handler.SIG_IGN) { return SignalHandler.SIG_IGN; ! } else if (handler instanceof InternalMiscHandler) { ! return ((InternalMiscHandler) handler).handler; } else { return new SunMiscHandler(signal, handler); } } ! SunMiscHandler(jdk.internal.misc.Signal iSignal, jdk.internal.misc.Signal.Handler iHandler) { this.iSignal = iSignal; this.iHandler = iHandler; } @Override --- 151,225 ---- * @see sun.misc.SignalHandler#SIG_IGN */ public static synchronized SignalHandler handle(Signal sig, SignalHandler handler) throws IllegalArgumentException { ! SignalDelegate.Handler oldHandler = SignalDelegate.handle(sig.iSignal, ! SignalDelegateHandler.of(sig, handler)); return SunMiscHandler.of(sig.iSignal, oldHandler); } /** * Raises a signal in the current process. * * @param sig a signal * @see sun.misc.Signal#handle(Signal sig, SignalHandler handler) */ public static void raise(Signal sig) throws IllegalArgumentException { ! SignalDelegate.raise(sig.iSignal); } /* ! * Wrapper class to proxy a SignalHandler to a jdk.internal.unsupported.SunMiscSignal.Handler. */ ! static final class SignalDelegateHandler implements SignalDelegate.Handler { private final SignalHandler handler; private final Signal signal; ! static SignalDelegate.Handler of(Signal signal, SignalHandler handler) { if (handler == SignalHandler.SIG_DFL) { ! return SignalDelegate.Handler.SIG_DFL; } else if (handler == SignalHandler.SIG_IGN) { ! return SignalDelegate.Handler.SIG_IGN; } else if (handler instanceof SunMiscHandler) { return ((SunMiscHandler)handler).iHandler; } else { ! return new SignalDelegateHandler(signal, handler); } } ! private SignalDelegateHandler(Signal signal, SignalHandler handler) { this.handler = handler; this.signal = signal; } @Override ! public void handle(SignalDelegate ignore) { handler.handle(signal); } } /* ! * Wrapper class to proxy a jdk.internal.unsupported.SunMiscSignal.Handler to a SignalHandler. */ static final class SunMiscHandler implements SignalHandler { ! private final SignalDelegate iSignal; ! private final SignalDelegate.Handler iHandler; ! static SignalHandler of(SignalDelegate signal, SignalDelegate.Handler handler) { ! if (handler == SignalDelegate.Handler.SIG_DFL) { return SignalHandler.SIG_DFL; ! } else if (handler == SignalDelegate.Handler.SIG_IGN) { return SignalHandler.SIG_IGN; ! } else if (handler instanceof SignalDelegateHandler) { ! return ((SignalDelegateHandler) handler).handler; } else { return new SunMiscHandler(signal, handler); } } ! SunMiscHandler(SignalDelegate iSignal, SignalDelegate.Handler iHandler) { this.iSignal = iSignal; this.iHandler = iHandler; } @Override
< prev index next >