yiisoft /
queue
| 1 | <?php |
||
| 2 | |||
| 3 | declare(strict_types=1); |
||
| 4 | |||
| 5 | namespace Yiisoft\Queue\Debug; |
||
| 6 | |||
| 7 | use Yiisoft\Yii\Debug\Collector\CollectorTrait; |
||
| 8 | use Yiisoft\Yii\Debug\Collector\SummaryCollectorInterface; |
||
| 9 | use Yiisoft\Queue\Enum\JobStatus; |
||
| 10 | use Yiisoft\Queue\Message\MessageInterface; |
||
| 11 | use Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface; |
||
| 12 | use Yiisoft\Queue\QueueInterface; |
||
| 13 | |||
| 14 | final class QueueCollector implements SummaryCollectorInterface |
||
| 15 | { |
||
| 16 | use CollectorTrait; |
||
| 17 | |||
| 18 | private array $pushes = []; |
||
| 19 | private array $statuses = []; |
||
| 20 | private array $processingMessages = []; |
||
| 21 | |||
| 22 | 3 | public function getCollected(): array |
|
| 23 | { |
||
| 24 | 3 | if (!$this->isActive()) { |
|
| 25 | 2 | return []; |
|
| 26 | } |
||
| 27 | |||
| 28 | 1 | return [ |
|
| 29 | 1 | 'pushes' => $this->pushes, |
|
| 30 | 1 | 'statuses' => $this->statuses, |
|
| 31 | 1 | 'processingMessages' => $this->processingMessages, |
|
| 32 | 1 | ]; |
|
| 33 | } |
||
| 34 | |||
| 35 | 3 | public function collectStatus(string $id, JobStatus $status): void |
|
| 36 | { |
||
| 37 | 3 | if (!$this->isActive()) { |
|
| 38 | 2 | return; |
|
| 39 | } |
||
| 40 | |||
| 41 | 1 | $statusText = match (true) { |
|
| 42 | 1 | $status->isDone() => 'done', |
|
| 43 | $status->isReserved() => 'reserved', |
||
| 44 | $status->isWaiting() => 'waiting', |
||
| 45 | default => 'unknown' |
||
| 46 | 1 | }; |
|
| 47 | 1 | $this->statuses[] = [ |
|
| 48 | 1 | 'id' => $id, |
|
| 49 | 1 | 'status' => $statusText, |
|
| 50 | 1 | ]; |
|
| 51 | } |
||
| 52 | |||
| 53 | 3 | public function collectPush( |
|
| 54 | string $channel, |
||
| 55 | MessageInterface $message, |
||
| 56 | string|array|callable|MiddlewarePushInterface ...$middlewareDefinitions, |
||
| 57 | ): void { |
||
| 58 | 3 | if (!$this->isActive()) { |
|
| 59 | 2 | return; |
|
| 60 | } |
||
| 61 | 1 | $this->pushes[$channel][] = [ |
|
| 62 | 1 | 'message' => $message, |
|
| 63 | 1 | 'middlewares' => $middlewareDefinitions, |
|
| 64 | 1 | ]; |
|
| 65 | } |
||
| 66 | |||
| 67 | 2 | public function collectWorkerProcessing(MessageInterface $message, QueueInterface $queue): void |
|
| 68 | { |
||
| 69 | 2 | if (!$this->isActive()) { |
|
| 70 | 1 | return; |
|
| 71 | } |
||
| 72 | 1 | $this->processingMessages[$queue->getChannelName()][] = $message; |
|
| 73 | } |
||
| 74 | |||
| 75 | 1 | private function reset(): void |
|
|
0 ignored issues
–
show
|
|||
| 76 | { |
||
| 77 | 1 | $this->pushes = []; |
|
| 78 | 1 | $this->statuses = []; |
|
| 79 | 1 | $this->processingMessages = []; |
|
| 80 | } |
||
| 81 | |||
| 82 | 3 | public function getSummary(): array |
|
| 83 | { |
||
| 84 | 3 | if (!$this->isActive()) { |
|
| 85 | 2 | return []; |
|
| 86 | } |
||
| 87 | |||
| 88 | 1 | $countPushes = array_sum(array_map(fn ($messages) => is_countable($messages) ? count($messages) : 0, $this->pushes)); |
|
| 89 | 1 | $countStatuses = count($this->statuses); |
|
| 90 | 1 | $countProcessingMessages = array_sum(array_map(fn ($messages) => is_countable($messages) ? count($messages) : 0, $this->processingMessages)); |
|
| 91 | |||
| 92 | 1 | return [ |
|
| 93 | 1 | 'queue' => [ |
|
| 94 | 1 | 'countPushes' => $countPushes, |
|
| 95 | 1 | 'countStatuses' => $countStatuses, |
|
| 96 | 1 | 'countProcessingMessages' => $countProcessingMessages, |
|
| 97 | 1 | ], |
|
| 98 | 1 | ]; |
|
| 99 | } |
||
| 100 | } |
||
| 101 |
This check looks for private methods that have been defined, but are not used inside the class.