Completed
Push — master ( 07f159...bb7259 )
by Sam
03:38
created

DelegatesMessagesTrait::tryDelegateMessage()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 3

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 12
ccs 6
cts 6
cp 1
rs 9.4285
cc 3
eloc 6
nc 3
nop 2
crap 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 2
	public function registerMessageHandler(HandlerInterface $handler)
28
	{
29 2
		$this->_handlers[] = $handler;
30 2
	}
31
32
33
	/**
34
	 * @param AbstractMessage     $message
35
	 * @param ConnectionInterface $sender
36
	 *
37
	 * @return AbstractMessage
38
	 *
39
	 * @throws UnhandledMessageException
40
	 */
41 2
	public function tryDelegateMessage(AbstractMessage $message, ConnectionInterface $sender)
42
	{
43 2
		foreach ($this->_handlers as $handler)
44
		{
45 2
			$response = $handler->handleMessage($message, $sender);
46
47 2
			if ($response !== false)
48 2
				return $response;
49
		}
50
51 1
		throw new UnhandledMessageException();
52
	}
53
54
}
55