1<?php 2/** 3 * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> 4 * 5 * @author Robin Appelman <robin@icewind.nl> 6 * 7 * @license GNU AGPL version 3 or any later version 8 * 9 * This program is free software: you can redistribute it and/or modify 10 * it under the terms of the GNU Affero General Public License as 11 * published by the Free Software Foundation, either version 3 of the 12 * License, or (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU Affero General Public License for more details. 18 * 19 * You should have received a copy of the GNU Affero General Public License 20 * along with this program. If not, see <http://www.gnu.org/licenses/>. 21 * 22 */ 23namespace OCP\Files\Notify; 24 25/** 26 * Provides access to detected changes in the storage by either actively listening 27 * or getting the list of changes that happened in the background 28 * 29 * @since 12.0.0 30 */ 31interface INotifyHandler { 32 /** 33 * Start listening for update notifications 34 * 35 * The provided callback will be called for every incoming notification with the following parameters 36 * - IChange|IRenameChange $change 37 * 38 * Note that this call is blocking and will not exit on it's own, to stop listening for notifications return `false` from the callback 39 * 40 * @param callable $callback 41 * 42 * @since 12.0.0 43 */ 44 public function listen(callable $callback); 45 46 /** 47 * Get all changes detected since the start of the notify process or the last call to getChanges 48 * 49 * @return IChange[] 50 * 51 * @since 12.0.0 52 */ 53 public function getChanges(); 54 55 /** 56 * Stop listening for changes 57 * 58 * Note that any pending changes will be discarded 59 * 60 * @since 12.0.0 61 */ 62 public function stop(); 63} 64