]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blobdiff - src/allmydata/monitor.py
Remove spurious 'self' arguments that should not be included in interface declarations.
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / monitor.py
index 22de77132d1afb7496a53b22cb24152f52c2ad11..d17833118517e517ef0f5171914a6c53c5d746ae 100644 (file)
@@ -27,21 +27,27 @@ class IMonitor(Interface):
 
     # the following methods are provided for the operation code
 
-    def is_cancelled(self):
+    def is_cancelled():
         """Returns True if the operation has been cancelled. If True,
         operation code should stop creating new work, and attempt to stop any
         work already in progress."""
 
-    def set_status(self, status):
+    def raise_if_cancelled():
+        """Raise OperationCancelledError if the operation has been cancelled.
+        Operation code that has a robust error-handling path can simply call
+        this periodically."""
+
+    def set_status(status):
         """Sets the Monitor's 'status' object to an arbitrary value.
         Different operations will store different sorts of status information
         here. Operation code should use get+modify+set sequences to update
         this."""
 
-    def get_status(self):
-        """Return the status object."""
+    def get_status():
+        """Return the status object. If the operation failed, this will be a
+        Failure instance."""
 
-    def finish(self, status):
+    def finish(status):
         """Call this when the operation is done, successful or not. The
         Monitor's lifetime is influenced by the completion of the operation
         it is monitoring. The Monitor's 'status' value will be set with the
@@ -54,21 +60,26 @@ class IMonitor(Interface):
 
     # the following methods are provided for the initiator of the operation
 
-    def is_finished(self):
+    def is_finished():
         """Return a boolean, True if the operation is done (whether
         successful or failed), False if it is still running."""
 
-    def when_done(self):
+    def when_done():
         """Return a Deferred that fires when the operation is complete. It
         will fire with the operation status, the same value as returned by
         get_status()."""
 
-    def cancel(self):
+    def cancel():
         """Cancel the operation as soon as possible. is_cancelled() will
         start returning True after this is called."""
 
     #   get_status() is useful too, but it is operation-specific
 
+
+class OperationCancelledError(Exception):
+    pass
+
+
 class Monitor:
     implements(IMonitor)
 
@@ -81,6 +92,10 @@ class Monitor:
     def is_cancelled(self):
         return self.cancelled
 
+    def raise_if_cancelled(self):
+        if self.cancelled:
+            raise OperationCancelledError()
+
     def is_finished(self):
         return self.finished