replace Callback with Callable/Pausable
authorcrawshaw <crawshaw@ibex.org>
Thu, 6 Jan 2005 16:06:42 +0000 (16:06 +0000)
committercrawshaw <crawshaw@ibex.org>
Thu, 6 Jan 2005 16:06:42 +0000 (16:06 +0000)
darcs-hash:20050106160642-2eb37-0dae051a22bfeb22e0bad6140c735797a05e18b2.gz

src/org/ibex/util/Callable.java [new file with mode: 0644]
src/org/ibex/util/Callback.java [deleted file]
src/org/ibex/util/Pausable.java [new file with mode: 0644]

diff --git a/src/org/ibex/util/Callable.java b/src/org/ibex/util/Callable.java
new file mode 100644 (file)
index 0000000..3281433
--- /dev/null
@@ -0,0 +1,21 @@
+// 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;
+}
diff --git a/src/org/ibex/util/Callback.java b/src/org/ibex/util/Callback.java
deleted file mode 100644 (file)
index c56bb77..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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);
-
-}
diff --git a/src/org/ibex/util/Pausable.java b/src/org/ibex/util/Pausable.java
new file mode 100644 (file)
index 0000000..b61ccfa
--- /dev/null
@@ -0,0 +1,24 @@
+// 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); }
+    }
+}