--- /dev/null
+// Copyright 2000-2005 the Contributors, as shown in the revision logs.
+// Licensed under the Apache Public Source License 2.0 ("the License").
+// You may not use this file except in compliance with the License.
+
+package org.ibex.util;
+
+/** Provides a generic interface with which to call an object with a
+ * given argument.
+ *
+ * <b>NOTE:</b> State restrictions and concurrent access are implementation
+ * specific. All the <tt>Callable</tt> interface specifies is that an
+ * object is callable, not the conditions under which a call may be
+ * made.
+ *
+ * @see org.ibex.util.Pausable
+ *
+ */
+public interface Callable {
+ /** Calls the object with a given argument. */
+ public Object run(Object o) throws Exception;
+}
+++ /dev/null
-// Copyright 2000-2005 the Contributors, as shown in the revision logs.
-// Licensed under the Apache Public Source License 2.0 ("the License").
-// You may not use this file except in compliance with the License.
-
-package org.ibex.util;
-
-/** a simple interface for callbacks*/
-public interface Callback {
-
- public abstract Object call(Object arg);
-
-}
--- /dev/null
+// Copyright 2000-2005 the Contributors, as shown in the revision logs.
+// Licensed under the Apache Public Source License 2.0 ("the License").
+// You may not use this file except in compliance with the License.
+
+package org.ibex.util;
+
+/** Provides a generic interface for an object that can be both called
+ * with a given argument and paused. */
+public interface Pausable extends Callable {
+ /** Executes or unpauses the task. */
+ public Object run(Object o) throws Exception, AlreadyRunningException;
+
+ /** Pauses the running task at its convienience. */
+ public void pause() throws NotPausableException;
+
+ public static class NotPausableException extends IllegalStateException {
+ public NotPausableException() {}
+ public NotPausableException(String msg) { super(msg); }
+ }
+ public static class AlreadyRunningException extends IllegalStateException {
+ public AlreadyRunningException() {}
+ public AlreadyRunningException(String msg) { super(msg); }
+ }
+}