diff options
author | Robin Appelman <icewind@owncloud.com> | 2015-03-02 15:25:31 +0100 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2015-03-02 15:25:31 +0100 |
commit | 00568af74d8b392ea9f991e3d4069cd50e030030 (patch) | |
tree | 5ff2a12efc275863ca06216c7bcff6a653e0db6d /lib/private/command | |
parent | 9c79b1fc6dd74c701adc20a867c5e4816c3accc4 (diff) | |
download | nextcloud-server-00568af74d8b392ea9f991e3d4069cd50e030030.tar.gz nextcloud-server-00568af74d8b392ea9f991e3d4069cd50e030030.zip |
Allow running the async commands from unit tests
Diffstat (limited to 'lib/private/command')
-rw-r--r-- | lib/private/command/queuebus.php | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/lib/private/command/queuebus.php b/lib/private/command/queuebus.php new file mode 100644 index 00000000000..29c769e0107 --- /dev/null +++ b/lib/private/command/queuebus.php @@ -0,0 +1,53 @@ +<?php +/** + * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Command; + +use OCP\Command\IBus; +use OCP\Command\ICommand; + +class QueueBus implements IBus { + /** + * @var (ICommand|callable)[] + */ + private $queue; + + /** + * Schedule a command to be fired + * + * @param \OCP\Command\ICommand | callable $command + */ + public function push($command) { + $this->queue[] = $command; + } + + /** + * Require all commands using a trait to be run synchronous + * + * @param string $trait + */ + public function requireSync($trait) { + } + + /** + * @param \OCP\Command\ICommand | callable $command + */ + private function runCommand($command) { + if ($command instanceof ICommand) { + $command->handle(); + } else { + $command(); + } + } + + public function run() { + while ($command = array_shift($this->queue)) { + $this->runCommand($command); + } + } +} |