home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / misc / Signal.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.4 KB  |  95 lines

  1. package sun.misc;
  2.  
  3. import java.util.Hashtable;
  4.  
  5. public final class Signal {
  6.    private static Hashtable handlers = new Hashtable(4);
  7.    private static Hashtable signals = new Hashtable(4);
  8.    private int number;
  9.    private String name;
  10.  
  11.    public int getNumber() {
  12.       return this.number;
  13.    }
  14.  
  15.    public String getName() {
  16.       return this.name;
  17.    }
  18.  
  19.    public boolean equals(Object var1) {
  20.       if (this == var1) {
  21.          return true;
  22.       } else if (var1 != null && var1 instanceof Signal) {
  23.          Signal var2 = (Signal)var1;
  24.          return this.name.equals(var2.name) && this.number == var2.number;
  25.       } else {
  26.          return false;
  27.       }
  28.    }
  29.  
  30.    public int hashCode() {
  31.       return this.number;
  32.    }
  33.  
  34.    public String toString() {
  35.       return "SIG" + this.name;
  36.    }
  37.  
  38.    public Signal(String var1) {
  39.       this.number = findSignal(var1);
  40.       this.name = var1;
  41.       if (this.number < 0) {
  42.          throw new IllegalArgumentException("Unknown signal: " + var1);
  43.       }
  44.    }
  45.  
  46.    public static synchronized SignalHandler handle(Signal var0, SignalHandler var1) throws IllegalArgumentException {
  47.       long var2 = var1 instanceof NativeSignalHandler ? ((NativeSignalHandler)var1).getHandler() : 2L;
  48.       long var4 = handle0(var0.number, var2);
  49.       if (var4 == -1L) {
  50.          throw new IllegalArgumentException("Signal already used by VM: " + var0);
  51.       } else {
  52.          signals.put(new Integer(var0.number), var0);
  53.          synchronized(handlers) {
  54.             SignalHandler var7 = (SignalHandler)handlers.get(var0);
  55.             handlers.remove(var0);
  56.             if (var2 == 2L) {
  57.                handlers.put(var0, var1);
  58.             }
  59.  
  60.             if (var4 == 0L) {
  61.                return SignalHandler.SIG_DFL;
  62.             } else if (var4 == 1L) {
  63.                return SignalHandler.SIG_IGN;
  64.             } else {
  65.                return (SignalHandler)(var4 == 2L ? var7 : new NativeSignalHandler(var4));
  66.             }
  67.          }
  68.       }
  69.    }
  70.  
  71.    public static void raise(Signal var0) throws IllegalArgumentException {
  72.       if (handlers.get(var0) == null) {
  73.          throw new IllegalArgumentException("Unhandled signal: " + var0);
  74.       } else {
  75.          raise0(var0.number);
  76.       }
  77.    }
  78.  
  79.    private static void dispatch(int var0) {
  80.       Signal var1 = (Signal)signals.get(new Integer(var0));
  81.       SignalHandler var2 = (SignalHandler)handlers.get(var1);
  82.       1 var3 = new 1(var2, var1);
  83.       if (var2 != null) {
  84.          (new Thread(var3, var1 + " handler")).start();
  85.       }
  86.  
  87.    }
  88.  
  89.    private static native int findSignal(String var0);
  90.  
  91.    private static native long handle0(int var0, long var1);
  92.  
  93.    private static native void raise0(int var0);
  94. }
  95.