Package sun.misc

Examples of sun.misc.SignalHandler


      try
      {
         // check to see if we have something to work with.
         Class.forName("sun.misc.SignalHandler");

         SignalHandler signalHandler = new SignalHandler()
         {
            @Override
            public void handle(final Signal signal)
            {
               try
View Full Code Here


@SuppressWarnings("restriction")
public class SigHandler
{
   public static void init(final ShellImpl shell)
   {
      SignalHandler signalHandler = new SignalHandler()
      {
         @Override
         public void handle(final Signal signal)
         {
            try
View Full Code Here

@SuppressWarnings("restriction")
public class SigHandler
{
   public static void init(final ShellImpl shell)
   {
      SignalHandler interruptHandler = new SignalHandler()
      {
         @Override
         public void handle(final Signal signal)
         {
            shell.interrupt();
View Full Code Here

     * on the shutdown lock, so no further synchronization is needed here
     */

    static void setup() {
        if (handler != null) return;
        SignalHandler sh = new SignalHandler() {
            public void handle(Signal sig) {
                Shutdown.exit(sig.getNumber() + 0200);
            }
        };
        handler = sh;
View Full Code Here

   *          When true the function will handle SIG_INT (Ctrl+C) by interrupting the processing and
   *          returning -1
   * @return 0 if ok
   */
  public int processLine(String line, boolean allowInterupting) {
    SignalHandler oldSignal = null;
    Signal interupSignal = null;

    if (allowInterupting) {
      // Remember all threads that were running at the time we started line processing.
      // Hook up the custom Ctrl+C handler while processing this line
      interupSignal = new Signal("INT");
      oldSignal = Signal.handle(interupSignal, new SignalHandler() {
        private final Thread cliThread = Thread.currentThread();
        private boolean interruptRequested;

        @Override
        public void handle(Signal signal) {
View Full Code Here

    private IRubyObject trap(final Ruby runtime, final JRubySignalHandler handler) {
        return trap(runtime,handler.signal,handler);
    }

    public IRubyObject restorePlatformDefault(IRubyObject recv, IRubyObject sig) {
        SignalHandler handler;
        synchronized (original) {
            handler = original.get(new Signal(sig.toString()));
        }
        if (handler!=null)
            return trap(recv.getRuntime(),sig.toString(),handler);
View Full Code Here

    public IRubyObject ignore(IRubyObject recv, IRubyObject sig) {
        return trap(recv.getRuntime(),sig.toString(),SignalHandler.SIG_IGN);
    }

    private IRubyObject trap(final Ruby runtime, final String signalName, final SignalHandler handler) {
        final SignalHandler oldHandler;
        final Signal signal;

        try {
            signal = new Signal(signalName);
        } catch (Throwable e) {
            return runtime.getNil();
        }

        try {
            oldHandler = Signal.handle(signal, handler);
        } catch (Exception e) {
            throw runtime.newArgumentError(e.getMessage());
        }
       
        synchronized (original) {
            if (!original.containsKey(signal))
                original.put(signal,oldHandler);
        }

        BlockCallback callback = null;
        if (oldHandler instanceof JRubySignalHandler) {
            JRubySignalHandler jsHandler = (JRubySignalHandler) oldHandler;
            if (jsHandler.blockCallback != null) {
                callback = jsHandler.blockCallback;
            } else {
                return jsHandler.block;
            }
        }
        if (callback == null) {
            callback = new BlockCallback() {
                public IRubyObject call(ThreadContext context, IRubyObject[] args, Block block) {
                    oldHandler.handle(signal);
                    return runtime.getNil();
                }
            };
        }
        final RubyModule signalModule = runtime.getModule("Signal");
View Full Code Here

   *          When true the function will handle SIG_INT (Ctrl+C) by interrupting the processing and
   *          returning -1
   * @return 0 if ok
   */
  public int processLine(String line, boolean allowInterupting) {
    SignalHandler oldSignal = null;
    Signal interupSignal = null;

    if (allowInterupting) {
      // Remember all threads that were running at the time we started line processing.
      // Hook up the custom Ctrl+C handler while processing this line
      interupSignal = new Signal("INT");
      oldSignal = Signal.handle(interupSignal, new SignalHandler() {
        private final Thread cliThread = Thread.currentThread();
        private boolean interruptRequested;

        @Override
        public void handle(Signal signal) {
View Full Code Here

        public Object trap(RubyString signalName, UndefinedPlaceholder command, final RubyProc block) {
            notDesignedForCompilation();

            final Signal signal = new Signal(signalName.toString());

            final SignalHandler newHandler = new ProcSignalHandler(block);
            final SignalHandler oldHandler = Signal.handle(signal, newHandler);

            if (oldHandler instanceof ProcSignalHandler) {
                return ((ProcSignalHandler) oldHandler).getProc();
            }
View Full Code Here

    private IRubyObject trap(final Ruby runtime, final JRubySignalHandler handler) {
        return trap(runtime,handler.signal,handler);
    }

    public IRubyObject restorePlatformDefault(IRubyObject recv, IRubyObject sig) {
        SignalHandler handler;
        Ruby runtime = recv.getRuntime();
        try {
            synchronized (original) {
                handler = original.get(new Signal(sig.toString()));
            }
View Full Code Here

TOP

Related Classes of sun.misc.SignalHandler

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.