From bf58f78392aadaa7da891f3872e6b333feb85a2b Mon Sep 17 00:00:00 2001
From: Daira Hopwood <daira@jacaranda.org>
Date: Tue, 28 Apr 2015 21:06:54 +0100
Subject: [PATCH] Add ignore count to uploaded callback.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
---
 src/allmydata/frontends/drop_upload.py | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/allmydata/frontends/drop_upload.py b/src/allmydata/frontends/drop_upload.py
index ea561d9f..1e2da41e 100644
--- a/src/allmydata/frontends/drop_upload.py
+++ b/src/allmydata/frontends/drop_upload.py
@@ -56,6 +56,7 @@ class DropUploader(service.MultiService):
             raise AssertionError("The URI in 'private/drop_upload_dircap' is not a writecap to a directory.")
 
         self._uploaded_callback = lambda ign: None
+        self._ignore_count = 0
 
         self._notifier = inotify.INotify()
         if hasattr(self._notifier, 'set_pending_delay'):
@@ -127,13 +128,23 @@ class DropUploader(service.MultiService):
                           "(this is normal for temporary files): %r" % (path.path, f))
                 self._stats_provider.count('drop_upload.files_disappeared', 1)
                 return None
+
         d.addCallbacks(_succeeded, _failed)
-        d.addBoth(self._uploaded_callback)
+        d.addBoth(self._do_upload_callback)
         return d
 
-    def set_uploaded_callback(self, callback):
-        """This sets a function that will be called after a file has been uploaded."""
+    def _do_upload_callback(self, res):
+        if self._ignore_count == 0:
+            self._uploaded_callback(res)
+        else:
+            self._ignore_count -= 1
+
+    def set_uploaded_callback(self, callback, ignore_count=0):
+        """
+        This sets a function that will be called after a file has been uploaded.
+        """
         self._uploaded_callback = callback
+        self._ignore_count = ignore_count
 
     def finish(self, for_tests=False):
         self._notifier.stopReading()
-- 
2.45.2