home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / misc / Signal.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.4 KB  |  101 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.          Hashtable var6 = handlers;
  54.          synchronized(var6) {
  55.             SignalHandler var7 = (SignalHandler)handlers.get(var0);
  56.             handlers.remove(var0);
  57.             if (var2 == 2L) {
  58.                handlers.put(var0, var1);
  59.             }
  60.  
  61.             if (var4 == 0L) {
  62.                SignalHandler var12 = SignalHandler.SIG_DFL;
  63.                return var12;
  64.             } else if (var4 == 1L) {
  65.                SignalHandler var11 = SignalHandler.SIG_IGN;
  66.                return var11;
  67.             } else if (var4 == 2L) {
  68.                return var7;
  69.             } else {
  70.                NativeSignalHandler var8 = new NativeSignalHandler(var4);
  71.                return var8;
  72.             }
  73.          }
  74.       }
  75.    }
  76.  
  77.    public static void raise(Signal var0) throws IllegalArgumentException {
  78.       if (handlers.get(var0) == null) {
  79.          throw new IllegalArgumentException("Unhandled signal: " + var0);
  80.       } else {
  81.          raise0(var0.number);
  82.       }
  83.    }
  84.  
  85.    private static void dispatch(int var0) {
  86.       Signal var1 = (Signal)signals.get(new Integer(var0));
  87.       SignalHandler var2 = (SignalHandler)handlers.get(var1);
  88.       1 var3 = new 1(var2, var1);
  89.       if (var2 != null) {
  90.          (new Thread(var3, var1 + " handler")).start();
  91.       }
  92.  
  93.    }
  94.  
  95.    private static native int findSignal(String var0);
  96.  
  97.    private static native long handle0(int var0, long var1);
  98.  
  99.    private static native void raise0(int var0);
  100. }
  101.