1 | <?php |
||
2 | namespace Knik\Gameap; |
||
3 | |||
4 | use Knik\Gameap\Exception\GdaemonClientException; |
||
5 | |||
6 | class GdaemonStatus extends Gdaemon |
||
7 | { |
||
8 | const COMMAND_VERSION = 1; |
||
9 | const COMMAND_STATUS_BASE = 2; |
||
10 | const COMMAND_STATUS_DETAILS = 3; |
||
11 | |||
12 | /** @var int */ |
||
13 | protected $mode = self::DAEMON_SERVER_MODE_STATUS; |
||
14 | |||
15 | public function version(): array |
||
16 | { |
||
17 | $results = $this->request(self::COMMAND_VERSION); |
||
18 | |||
19 | return [ |
||
20 | 'version' => $results[0] ?? '-', |
||
21 | 'compile_date' => $results[1] ?? '-', |
||
22 | 6 | ]; |
|
23 | } |
||
24 | 6 | ||
25 | public function infoBase(): array |
||
26 | { |
||
27 | 3 | $results = $this->request(self::COMMAND_STATUS_BASE); |
|
28 | 3 | ||
29 | 1 | return [ |
|
30 | 'uptime' => $results[0], |
||
31 | 'working_tasks_count' => $results[1], |
||
32 | 'waiting_tasks_count' => $results[2], |
||
33 | 'online_servers_count' => $results[3], |
||
34 | ]; |
||
35 | 3 | } |
|
36 | |||
37 | 3 | public function infoDetails(): array |
|
38 | { |
||
39 | $results = $this->request(self::COMMAND_STATUS_DETAILS); |
||
40 | 3 | ||
41 | 3 | return [ |
|
42 | 3 | 'uptime' => $results[0], |
|
43 | 3 | 'working_tasks_list' => $results[1], |
|
44 | 1 | 'waiting_tasks_list' => $results[2], |
|
45 | 'online_servers_list' => $results[3], |
||
46 | ]; |
||
47 | } |
||
48 | |||
49 | private function request(int $command): array |
||
50 | 3 | { |
|
51 | $message = $this->binn->serialize([$command]); |
||
52 | 3 | ||
53 | $read = $this->writeAndReadSocket($message); |
||
54 | |||
55 | 3 | $results = $this->binn->unserialize($read); |
|
56 | 3 | ||
57 | 3 | if ($results[0] != self::STATUS_OK) { |
|
58 | 3 | throw new GdaemonClientException('Error: ' . isset($results[1]) ? $results[1] : 'Unknown'); |
|
59 | 1 | } |
|
60 | |||
61 | return array_slice($results, 1); |
||
0 ignored issues
–
show
Bug
introduced
by
![]() |
|||
62 | } |
||
63 | } |
||
64 |