diff options
author | Robin Appelman <icewind@owncloud.com> | 2015-12-02 15:14:40 +0100 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2016-01-14 12:54:42 +0100 |
commit | a3d50ef49a4c7183086398133793d4788bbf7901 (patch) | |
tree | 3b4ac6b3db3a2b0b56de5088017e4810324db009 /lib/public/files | |
parent | c27894791ebc2174cad82dc4039e8bb343114c50 (diff) | |
download | nextcloud-server-a3d50ef49a4c7183086398133793d4788bbf7901.tar.gz nextcloud-server-a3d50ef49a4c7183086398133793d4788bbf7901.zip |
add watcher interface
Diffstat (limited to 'lib/public/files')
-rw-r--r-- | lib/public/files/cache/iwatcher.php | 74 | ||||
-rw-r--r-- | lib/public/files/storage.php | 6 |
2 files changed, 80 insertions, 0 deletions
diff --git a/lib/public/files/cache/iwatcher.php b/lib/public/files/cache/iwatcher.php new file mode 100644 index 00000000000..f9695f65855 --- /dev/null +++ b/lib/public/files/cache/iwatcher.php @@ -0,0 +1,74 @@ +<?php +/** + * @author Robin Appelman <icewind@owncloud.com>> + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCP\Files\Cache; + +/** + * check the storage backends for updates and change the cache accordingly + */ +interface IWatcher { + const CHECK_NEVER = 0; // never check the underlying filesystem for updates + const CHECK_ONCE = 1; // check the underlying filesystem for updates once every request for each file + const CHECK_ALWAYS = 2; // always check the underlying filesystem for updates + + /** + * @param int $policy either IWatcher::CHECK_NEVER, IWatcher::CHECK_ONCE, IWatcher::CHECK_ALWAYS + */ + public function setPolicy($policy); + + /** + * @return int either IWatcher::CHECK_NEVER, IWatcher::CHECK_ONCE, IWatcher::CHECK_ALWAYS + */ + public function getPolicy(); + + /** + * check $path for updates and update if needed + * + * @param string $path + * @param ICacheEntry|null $cachedEntry + * @return boolean true if path was updated + */ + public function checkUpdate($path, $cachedEntry = null); + + /** + * Update the cache for changes to $path + * + * @param string $path + * @param ICacheEntry $cachedData + */ + public function update($path, $cachedData); + + /** + * Check if the cache for $path needs to be updated + * + * @param string $path + * @param ICacheEntry $cachedData + * @return bool + */ + public function needsUpdate($path, $cachedData); + + /** + * remove deleted files in $path from the cache + * + * @param string $path + */ + public function cleanFolder($path); +} diff --git a/lib/public/files/storage.php b/lib/public/files/storage.php index 063455a2703..e59cecbdf7f 100644 --- a/lib/public/files/storage.php +++ b/lib/public/files/storage.php @@ -37,6 +37,7 @@ use OCP\Files\Cache\ICache; use OCP\Files\Cache\IPropagator; use OCP\Files\Cache\IScanner; use OCP\Files\Cache\IUpdater; +use OCP\Files\Cache\IWatcher; use OCP\Files\InvalidPathException; use OCP\Lock\ILockingProvider; @@ -492,4 +493,9 @@ interface Storage { * @return IUpdater */ public function getUpdater(); + + /** + * @return IWatcher + */ + public function getWatcher(); } |