GdaemonCommands   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 27
c 2
b 0
f 0
dl 0
loc 59
ccs 13
cts 13
cp 1
rs 10
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A exec() 0 24 4
1
<?php
2
3
namespace Knik\Gameap;
4
5
use Knik\Gameap\Exception\GdaemonClientException;
6
7
class GdaemonCommands extends Gdaemon
8
{
9
    const COMMAND_EXEC = 1;
10
11
    /**
12
     * @var array
13
     */
14
    protected $configurable = [
15
        'host',
16
        'port',
17
        'username',
18
        'password',
19
        'serverCertificate',
20
        'localCertificate',
21
        'privateKey',
22
        'privateKeyPass',
23
        'timeout',
24
        'workDir',
25
    ];
26
27
    /**
28
     * @var string
29
     */
30
    protected $workDir = '';
31
32
    /**
33
     * @var int
34
     */
35
    protected $mode = self::DAEMON_SERVER_MODE_CMD;
36
37
    /**
38
     * @param string $command
39
     * @param string $exitCode Command exit code
40
     * @return string Command execute results
41
     */
42
    public function exec($command, &$exitCode = null): string
43
    {
44 9
        if (empty($this->workDir)) {
45
            throw new GdaemonClientException('Empty working directory');
46 9
        }
47 3
48
        $message = $this->binn->serialize([
49
            self::COMMAND_EXEC,
50 6
            $command,
51
            $this->workDir,
52 6
        ]);
53 6
54 6
        $read = $this->writeAndReadSocket($message);
55
56
        $results = $this->binn->unserialize($read);
57 6
58
        if ($results[0] != self::STATUS_OK) {
59 6
            throw new GdaemonClientException('Execute command error: ' . isset($results[1]) ? $results[1] : 'Unknown');
60 6
        }
61 6
62
        $exitCode = $results[1] ?? -1;
63 6
64 3
        // Return command execute results
65
        return $results[2] ?? '';
66
    }
67
}
68