[Pkg-owncloud-commits] [owncloud] 12/69: Split checkUpdate

David Prévot taffit at moszumanska.debian.org
Wed Nov 11 02:03:59 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch stable8
in repository owncloud.

commit 6d711fbde2ebbfcad831ee5b43f58901b5a8d0e8
Author: Robin Appelman <icewind at owncloud.com>
Date:   Mon Oct 26 15:01:58 2015 +0100

    Split checkUpdate
---
 apps/files_sharing/lib/watcher.php  | 52 ++++++++++++++++----------------
 lib/private/files/cache/watcher.php | 59 +++++++++++++++++++++++++------------
 2 files changed, 66 insertions(+), 45 deletions(-)

diff --git a/apps/files_sharing/lib/watcher.php b/apps/files_sharing/lib/watcher.php
index dc95dde..3af6f73 100644
--- a/apps/files_sharing/lib/watcher.php
+++ b/apps/files_sharing/lib/watcher.php
@@ -29,41 +29,41 @@ namespace OC\Files\Cache;
  * check the storage backends for updates and change the cache accordingly
  */
 class Shared_Watcher extends Watcher {
+	/**
+	 * @var \OC\Files\Storage\Shared $storage
+	 */
+	protected $storage;
 
 	/**
-	 * check $path for updates
+	 * Update the cache for changes to $path
 	 *
 	 * @param string $path
-	 * @param array $cachedEntry
-	 * @return boolean true if path was updated
+	 * @param array $cachedData
 	 */
-	public function checkUpdate($path, $cachedEntry = null) {
-		if (parent::checkUpdate($path, $cachedEntry) === true) {
-			// since checkUpdate() has already updated the size of the subdirs,
-			// only apply the update to the owner's parent dirs
-
-			// find last parent before reaching the shared storage root,
-			// which is the actual shared dir from the owner
-			$sepPos = strpos($path, '/');
-			if ($sepPos > 0) {
-				$baseDir = substr($path, 0, $sepPos);
-			} else {
-				$baseDir = $path;
-			}
+	public function update($path, $cachedData) {
+		parent::update($path, $cachedData);
+		// since parent::update() has already updated the size of the subdirs,
+		// only apply the update to the owner's parent dirs
 
-			// find the path relative to the data dir
-			$file = $this->storage->getFile($baseDir);
-			$view = new \OC\Files\View('/' . $file['fileOwner']);
+		// find last parent before reaching the shared storage root,
+		// which is the actual shared dir from the owner
+		$sepPos = strpos($path, '/');
+		if ($sepPos > 0) {
+			$baseDir = substr($path, 0, $sepPos);
+		} else {
+			$baseDir = $path;
+		}
 
-			// find the owner's storage and path
-			list($storage, $internalPath) = $view->resolvePath($file['path']);
+		// find the path relative to the data dir
+		$file = $this->storage->getFile($baseDir);
+		$view = new \OC\Files\View('/' . $file['fileOwner']);
 
-			// update the parent dirs' sizes in the owner's cache
-			$storage->getCache()->correctFolderSize(dirname($internalPath));
+		// find the owner's storage and path
+		/** @var \OC\Files\Storage\Storage $storage */
+		list($storage, $internalPath) = $view->resolvePath($file['path']);
 
-			return true;
-		}
-		return false;
+		// update the parent dirs' sizes in the owner's cache
+		$storage->getCache()->correctFolderSize(dirname($internalPath));
 	}
 
 	/**
diff --git a/lib/private/files/cache/watcher.php b/lib/private/files/cache/watcher.php
index ff97a1f..e660e56 100644
--- a/lib/private/files/cache/watcher.php
+++ b/lib/private/files/cache/watcher.php
@@ -74,37 +74,58 @@ class Watcher {
 	}
 
 	/**
-	 * check $path for updates
+	 * check $path for updates and update if needed
 	 *
 	 * @param string $path
 	 * @param array $cachedEntry
 	 * @return boolean true if path was updated
 	 */
 	public function checkUpdate($path, $cachedEntry = null) {
-		if ($this->watchPolicy === self::CHECK_ALWAYS or ($this->watchPolicy === self::CHECK_ONCE and array_search($path, $this->checkedPaths) === false)) {
-			if (is_null($cachedEntry)) {
-				$cachedEntry = $this->cache->get($path);
-			}
-			$this->checkedPaths[] = $path;
-			if ($this->storage->hasUpdated($path, $cachedEntry['storage_mtime'])) {
-				if ($this->storage->is_dir($path)) {
-					$this->scanner->scan($path, Scanner::SCAN_SHALLOW);
-				} else {
-					$this->scanner->scanFile($path);
-				}
-				if ($cachedEntry['mimetype'] === 'httpd/unix-directory') {
-					$this->cleanFolder($path);
-				}
-				$this->cache->correctFolderSize($path);
-				return true;
-			}
-			return false;
+		if (is_null($cachedEntry)) {
+			$cachedEntry = $this->cache->get($path);
+		}
+		if ($this->needsUpdate($path, $cachedEntry)) {
+			$this->update($path, $cachedEntry);
+			return true;
 		} else {
 			return false;
 		}
 	}
 
 	/**
+	 * Update the cache for changes to $path
+	 *
+	 * @param string $path
+	 * @param array $cachedData
+	 */
+	public function update($path, $cachedData) {
+		if ($this->storage->is_dir($path)) {
+			$this->scanner->scan($path, Scanner::SCAN_SHALLOW);
+		} else {
+			$this->scanner->scanFile($path);
+		}
+		if ($cachedData['mimetype'] === 'httpd/unix-directory') {
+			$this->cleanFolder($path);
+		}
+		$this->cache->correctFolderSize($path);
+	}
+
+	/**
+	 * Check if the cache for $path needs to be updated
+	 *
+	 * @param string $path
+	 * @param array $cachedData
+	 * @return bool
+	 */
+	public function needsUpdate($path, $cachedData) {
+		if ($this->watchPolicy === self::CHECK_ALWAYS or ($this->watchPolicy === self::CHECK_ONCE and array_search($path, $this->checkedPaths) === false)) {
+			$this->checkedPaths[] = $path;
+			return $this->storage->hasUpdated($path, $cachedData['storage_mtime']);
+		}
+		return false;
+	}
+
+	/**
 	 * remove deleted files in $path from the cache
 	 *
 	 * @param string $path

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list