1 | <?php |
||
2 | /** |
||
3 | * Abstract watcher |
||
4 | * User: moyo |
||
5 | * Date: 13/10/2017 |
||
6 | * Time: 6:21 PM |
||
7 | */ |
||
8 | |||
9 | namespace Carno\Consul\APIs; |
||
10 | |||
11 | use Carno\Consul\Chips\SVersions; |
||
12 | use Carno\HTTP\Standard\Response; |
||
13 | use Carno\Promise\Promise; |
||
14 | use Carno\Promise\Promised; |
||
15 | |||
16 | abstract class AbstractWatcher extends AbstractGate |
||
17 | { |
||
18 | // service version index |
||
19 | protected const INDEX_HEADER_KEY = 'X-Consul-Index'; |
||
20 | |||
21 | /** |
||
22 | * 10m |
||
23 | * @var int |
||
24 | */ |
||
25 | protected $timeout = 600000; |
||
26 | |||
27 | /** |
||
28 | * wait time for http long polling |
||
29 | * @var string |
||
30 | */ |
||
31 | protected $blockingWait = '5m'; |
||
32 | |||
33 | /** |
||
34 | * rand wait time for empty results (milliseconds) [min,max] |
||
35 | * @var int[] |
||
36 | */ |
||
37 | protected $emptyWait = [1000, 2000]; |
||
38 | |||
39 | /** |
||
40 | * @var Promised |
||
41 | */ |
||
42 | private $canceller = null; |
||
43 | |||
44 | /** |
||
45 | * @param int $index |
||
46 | */ |
||
47 | protected function setVIndex(int $index) : void |
||
48 | { |
||
49 | $this->setQuery('wait', $this->blockingWait); |
||
50 | $index && $this->setQuery('index', $index); |
||
51 | } |
||
52 | |||
53 | /** |
||
54 | * @param SVersions $versions |
||
55 | * @param Response $response |
||
56 | */ |
||
57 | protected function assignVIndex($versions, Response $response) : void |
||
58 | { |
||
59 | $versions->setVersion($response->getHeaderLine(self::INDEX_HEADER_KEY)); |
||
0 ignored issues
–
show
Bug
introduced
by
![]() |
|||
60 | } |
||
61 | |||
62 | /** |
||
63 | * @param Promised $superior |
||
64 | * @return static |
||
65 | */ |
||
66 | public function setCanceller(Promised $superior) : self |
||
67 | { |
||
68 | $superior->then(function () { |
||
69 | $this->canceller && $this->canceller->pended() && $this->canceller->resolve(); |
||
70 | }); |
||
71 | return $this; |
||
72 | } |
||
73 | |||
74 | /** |
||
75 | * @return Promised |
||
76 | */ |
||
77 | protected function getCanceller() : Promised |
||
78 | { |
||
79 | return $this->canceller = Promise::deferred(); |
||
80 | } |
||
81 | } |
||
82 |