/
SubscriptionMap.php
32 lines (28 loc) · 1022 Bytes
/
SubscriptionMap.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php declare(strict_types=1);
/**
* This file is part of the daikon-cqrs/message-bus project.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Daikon\MessageBus\Channel\Subscription;
use Daikon\DataStructure\TypedMap;
use Daikon\Interop\Assertion;
final class SubscriptionMap extends TypedMap
{
public function __construct(iterable $subscriptions = [])
{
$mappedSubscriptions = [];
/** @var SubscriptionInterface $subscription */
foreach ($subscriptions as $subscription) {
$subscriptionKey = $subscription->getKey();
Assertion::keyNotExists(
$mappedSubscriptions,
$subscriptionKey,
"Subscription key '$subscriptionKey' is already defined."
);
$mappedSubscriptions[$subscriptionKey] = $subscription;
}
$this->init($mappedSubscriptions, [SubscriptionInterface::class]);
}
}