Passed
Push — master ( aab447...5fbf30 )
by Roeland
14:01
created

EventDispatcher::dispatch()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 4
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * @copyright 2019 Christoph Wurst <[email protected]>
7
 *
8
 * @author 2019 Christoph Wurst <[email protected]>
9
 *
10
 * @license GNU AGPL version 3 or any later version
11
 *
12
 * This program is free software: you can redistribute it and/or modify
13
 * it under the terms of the GNU Affero General Public License as
14
 * published by the Free Software Foundation, either version 3 of the
15
 * License, or (at your option) any later version.
16
 *
17
 * This program is distributed in the hope that it will be useful,
18
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
 * GNU Affero General Public License for more details.
21
 *
22
 * You should have received a copy of the GNU Affero General Public License
23
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
24
 */
25
26
namespace OC\EventDispatcher;
27
28
use OCP\EventDispatcher\Event;
29
use OCP\EventDispatcher\IEventDispatcher;
30
use OCP\IContainer;
31
use OCP\ILogger;
32
use OCP\IServerContainer;
33
use Symfony\Component\EventDispatcher\EventDispatcher as SymfonyDispatcher;
34
35
class EventDispatcher implements IEventDispatcher {
36
37
	/** @var SymfonyDispatcher */
38
	private $dispatcher;
39
40
	/** @var IContainer */
41
	private $container;
42
43
	/** @var ILogger */
44
	private $logger;
45
46
	public function __construct(SymfonyDispatcher $dispatcher,
47
								IServerContainer $container,
48
								ILogger $logger) {
49
		$this->dispatcher = $dispatcher;
50
		$this->container = $container;
51
		$this->logger = $logger;
52
	}
53
54
	public function addListener(string $eventName,
55
								callable $listener,
56
								int $priority = 0): void {
57
		$this->dispatcher->addListener($eventName, $listener, $priority);
58
	}
59
60
	public function addServiceListener(string $eventName,
61
									   string $className,
62
									   int $priority = 0): void {
63
		$listener = new ServiceEventListener(
64
			$this->container,
65
			$className,
66
			$this->logger
67
		);
68
69
		$this->addListener($eventName, $listener, $priority);
70
	}
71
72
	public function dispatch(string $eventName,
73
							 Event $event): void {
74
75
		$this->dispatcher->dispatch($eventName, $event);
76
	}
77
78
	/**
79
	 * @return SymfonyDispatcher
80
	 */
81
	public function getSymfonyDispatcher(): SymfonyDispatcher {
82
		return $this->dispatcher;
83
	}
84
85
}
86