com.caucho.util
Class Exit

java.lang.Object
  |
  +--com.caucho.util.Exit
All Implemented Interfaces:
AlarmListener, java.util.EventListener

public class Exit
extends java.lang.Object
implements AlarmListener

The exit class is used to automatically clean state. For example, Resin JavaScript will close open files when the script exits. Here's a sample use:

   boolean isExit = addExit();
   try {
     ...
   } finally {
     if (isExit)
       exit();
   }
 

Objects register for the exit callback by calling addExit(listener, object).

Exits are intrinsically tied to a thread.


Method Summary
static boolean addExit()
          Starts a protection scope.
static void addExit(ExitListener listener, java.lang.Object object)
          Registers the object and listener.
static void exit()
          Calls all registered listeners.
 void handleAlarm(Alarm alarm)
          A paranoid callback to clean up exits for threads which have died for some reason.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

addExit

public static void addExit(ExitListener listener,
                           java.lang.Object object)
Registers the object and listener. The listener will be called when the thread exits the scope.

If there is no protection scope, i.e. addExit() hasn't been called, then this function does nothing.

Parameters:
listener - the exit handler
object - the object which needs cleanup

addExit

public static boolean addExit()
Starts a protection scope. Only the outermost scope is important, so protecting routines must check the return value to see if they are the outermost scope.
Returns:
true if this is the outermost scope.

exit

public static void exit()
Calls all registered listeners.

handleAlarm

public void handleAlarm(Alarm alarm)
A paranoid callback to clean up exits for threads which have died for some reason.
Specified by:
handleAlarm in interface AlarmListener