Lines 90.00% 9 / 10
Functions and Methods 66.66% 2 / 3
Classes and Traits 0.00% 0 / 1
Name Lines Functions and Methods CRAP Classes and Traits
RegistrySnapshotHandler 90.00% 9 / 10 66.66% 2 / 3 4.02 0.00% 0 / 1
 __construct 100.00% 1 / 1 100.00% 1 / 1 1
 handledMessageClass 0.00% 0 / 1 0.00% 0 / 1 2
 handle 100.00% 8 / 8 100.00% 1 / 1 2
1<?php
2
3declare(strict_types=1);
4
5namespace Stewart\Runtime\Worker\Message;
6
7use Psr\Log\LoggerInterface;
8use Stewart\Runtime\Ipc\Message\BrokerMessage;
9use Stewart\Runtime\Ipc\Message\RegistrySnapshot;
10use Stewart\Runtime\Registry\RegistryCache;
11
12/** @implements BrokerMessageHandler<RegistrySnapshot> */
13final readonly class RegistrySnapshotHandler implements BrokerMessageHandler
14{
15    public function __construct(
16        private RegistryCache $registryCache,
17        private LoggerInterface $logger,
18    ) {}
19
20    public function handledMessageClass(): string
21    {
22        return RegistrySnapshot::class;
23    }
24
25    /** @param RegistrySnapshot $message */
26    public function handle(BrokerMessage $message): void
27    {
28        $registry = $message->registry->registry;
29
30        if ($this->registryCache->replaceIfNewer($registry, $message->revision)) {
31            $this->logger->debug('Registry updated', [
32                'revision' => $message->revision,
33                'areas' => $registry->listAreas()->count(),
34                'devices' => $registry->listDevices()->count(),
35                'entities' => $registry->listEntities()->count(),
36            ]);
37        }
38    }
39}