DelegatesMessagesTrait   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 8
c 1
b 0
f 1
dl 0
loc 37
rs 10
ccs 10
cts 10
cp 1
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A registerMessageHandler() 0 3 1
A tryDelegateMessage() 0 11 3
1
<?php
2
3
namespace Jalle19\StatusManager\Message\Handler;
4
5
use Jalle19\StatusManager\Exception\UnhandledMessageException;
6
use Jalle19\StatusManager\Message\AbstractMessage;
7
use Ratchet\ConnectionInterface;
8
9
/**
10
 * Class DelegatesMessagesTrait
11
 * @package   Jalle19\StatusManager\Message\Handler
12
 * @copyright Copyright &copy; Sam Stenvall 2016-
13
 * @license   https://www.gnu.org/licenses/gpl.html The GNU General Public License v2.0
14
 */
15
trait DelegatesMessagesTrait
16
{
17
18
	/**
19
	 * @var HandlerInterface[]
20
	 */
21
	private $_handlers = [];
22
23
24
	/**
25
	 * @param HandlerInterface $handler
26
	 */
27 6
	public function registerMessageHandler(HandlerInterface $handler)
28
	{
29 6
		$this->_handlers[] = $handler;
30 6
	}
31
32
33
	/**
34
	 * @param AbstractMessage     $message
35
	 * @param ConnectionInterface $sender
36
	 *
37
	 * @return AbstractMessage
38
	 *
39
	 * @throws UnhandledMessageException
40
	 */
41 3
	public function tryDelegateMessage(AbstractMessage $message, ConnectionInterface $sender)
42
	{
43 3
		foreach ($this->_handlers as $handler)
44
		{
45 3
			$response = $handler->handleMessage($message, $sender);
46
47 3
			if ($response !== false)
48 3
				return $response;
49 1
		}
50
51 1
		throw new UnhandledMessageException();
52
	}
53
54
}
55