Lines 0.00% 0 / 2
Functions and Methods 0.00% 0 / 2
Classes and Traits 0.00% 0 / 1
Name Lines Functions and Methods CRAP Classes and Traits
ReconnectingMqttLinkFactory 0.00% 0 / 2 0.00% 0 / 2 6 0.00% 0 / 1
 __construct 0.00% 0 / 1 0.00% 0 / 1 2
 createMqttLink 0.00% 0 / 1 0.00% 0 / 1 2
1<?php
2
3declare(strict_types=1);
4
5namespace Stewart\Mqtt;
6
7use Psr\Log\LoggerInterface;
8use Stewart\Contracts\Time\Clock;
9use Stewart\Mqtt\Connection\MqttConnector;
10use Stewart\Runtime\Broker\Mqtt\MqttLink;
11use Stewart\Runtime\Broker\Mqtt\MqttLinkFactory;
12use Stewart\Runtime\Config\MqttConfig;
13use Stewart\Support\Time\Deadlines;
14
15final readonly class ReconnectingMqttLinkFactory implements MqttLinkFactory
16{
17    public function __construct(
18        private MqttConnector $connector,
19        private Deadlines $deadlines,
20        private Clock $clock,
21        private LoggerInterface $logger,
22    ) {}
23
24    public function createMqttLink(MqttConfig $config): MqttLink
25    {
26        return new ReconnectingMqttLink($config, $this->connector, new OutboundMqttQueue($config->outboundBuffer), $this->deadlines, $this->clock, $this->logger);
27    }
28}