From 16ef5a8b357e623b1f1621c3e52957167e93e46b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20M=C3=BCller?= <thomas.mueller@tmit.eu>
Date: Mon, 16 Sep 2013 10:47:29 +0200
Subject: [PATCH] returning the number of stored bytes in store() and adding
 cleanup() method

---
 lib/filechunking.php | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/lib/filechunking.php b/lib/filechunking.php
index e6d69273a44..c0e3acbf1aa 100644
--- a/lib/filechunking.php
+++ b/lib/filechunking.php
@@ -34,10 +34,19 @@ class OC_FileChunking {
 		return $this->cache;
 	}
 
+	/**
+	 * Stores the given $data under the given $key - the number of stored bytes is returned
+	 *
+	 * @param $index
+	 * @param $data
+	 * @return int
+	 */
 	public function store($index, $data) {
 		$cache = $this->getCache();
 		$name = $this->getPrefix().$index;
 		$cache->set($name, $data);
+
+		return $cache->size($name);
 	}
 
 	public function isComplete() {
@@ -58,12 +67,24 @@ class OC_FileChunking {
 		$count = 0;
 		for($i=0; $i < $this->info['chunkcount']; $i++) {
 			$chunk = $cache->get($prefix.$i);
-			$cache->remove($prefix.$i);
 			$count += fwrite($f, $chunk);
 		}
+
+		$this->cleanup();
 		return $count;
 	}
 
+	/**
+	 * Removes all chunks which belong to this transmission
+	 */
+	public function cleanup() {
+		$cache = $this->getCache();
+		$prefix = $this->getPrefix();
+		for($i=0; $i < $this->info['chunkcount']; $i++) {
+			$cache->remove($prefix.$i);
+		}
+	}
+
 	public function signature_split($orgfile, $input) {
 		$info = unpack('n', fread($input, 2));
 		$blocksize = $info[1];
-- 
GitLab