• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tochka-developers / queue-promises / 9935584685

15 Jul 2024 07:44AM UTC coverage: 47.259% (-18.3%) from 65.524%
9935584685

push

github

darkdarin
fix: tests

4 of 4 new or added lines in 2 files covered. (100.0%)

431 existing lines in 40 files now uncovered.

612 of 1295 relevant lines covered (47.26%)

2.53 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Core/Support/DaemonWorker.php
1
<?php
2

3
namespace Tochka\Promises\Core\Support;
4

5
use Carbon\Carbon;
6

7
trait DaemonWorker
8
{
9
    private int $sleepTime;
10
    private Carbon $lastIteration;
11

12
    /**
13
     * @param callable $callback
14
     * @param null|callable(): bool $shouldQuitCallback
15
     * @param null|callable(): bool $shouldPausedCallback
16
     * @return void
17
     */
18
    public function daemon(callable $callback, ?callable $shouldQuitCallback = null, ?callable $shouldPausedCallback = null): void
19
    {
20
        if ($shouldQuitCallback === null) {
×
21
            $shouldQuitCallback = fn(): bool => false;
×
22
        }
UNCOV
23
        if ($shouldPausedCallback === null) {
×
UNCOV
24
            $shouldPausedCallback = fn(): bool => false;
×
25
        }
26

UNCOV
27
        while (true) {
×
28
            if ($shouldQuitCallback()) {
×
UNCOV
29
                return;
×
30
            }
31

UNCOV
32
            if ($shouldPausedCallback() || $this->sleepAfterLastIteration()) {
×
33
                $this->sleep(1);
×
34

UNCOV
35
                continue;
×
36
            }
37

UNCOV
38
            $callback();
×
39

40
            $this->lastIteration = Carbon::now();
×
41
        }
42
    }
43

44
    private function sleep(int|float $seconds): void
45
    {
UNCOV
46
        if (is_float($seconds)) {
×
UNCOV
47
            $seconds = (int) $seconds * 1000000;
×
48
            if ($seconds < 0) {
×
UNCOV
49
                return;
×
50
            }
51

UNCOV
52
            usleep($seconds);
×
53
        } else {
UNCOV
54
            if ($seconds < 0) {
×
UNCOV
55
                return;
×
56
            }
57

UNCOV
58
            sleep($seconds);
×
59
        }
60
    }
61

62
    private function sleepAfterLastIteration(): bool
63
    {
UNCOV
64
        return $this->lastIteration > Carbon::now()->subSeconds($this->sleepTime);
×
65
    }
66
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc