Completed
Branch 0.4-dev (999b58)
by Evgenij
18:41
created

Configuration::getDefaultOptions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 11
ccs 7
cts 7
cp 1
rs 9.4285
cc 1
eloc 7
nc 1
nop 0
crap 1
1
<?php
2
/**
3
 * Async sockets
4
 *
5
 * @copyright Copyright (c) 2015-2016, Efimov Evgenij <[email protected]>
6
 *
7
 * This source file is subject to the MIT license that is bundled
8
 * with this source code in the file LICENSE.
9
 */
10
namespace AsyncSockets\Configuration;
11
12
/**
13
 * Class Configuration
14
 */
15
class Configuration
16
{
17
    /**
18
     * Connection timeout
19
     *
20
     * @var double
21
     */
22
    private $connectTimeout;
23
24
    /**
25
     * I/O operations timeout
26
     *
27
     * @var double
28
     */
29
    private $ioTimeout;
30
31
    /**
32
     * Aliases of preferred RequestExecutor engines
33
     *
34
     * @var string[]
35
     */
36
    private $preferredEngines = [];
37
38
    /**
39
     * Configuration constructor.
40
     *
41
     * @param array $options {
42
     *      Array with options
43
     *
44
     *      @var double $connectTimeout Connection timeout
45
     *      @var double $ioTimeout Timeout on I/O operations
46
     *      @var string[] $preferredEngines Array with aliases of preferred RequestExecutor engines
47
     * }
48
     */
49 136
    public function __construct(array $options = [])
50
    {
51 136
        $options += $this->getDefaultOptions();
52
53 136
        $this->connectTimeout   = (double) $options[ 'connectTimeout' ];
54 136
        $this->ioTimeout        = (double) $options[ 'ioTimeout' ];
55 136
        $this->preferredEngines = (array) $options[ 'preferredEngines' ];
56 136
    }
57
58
    /**
59
     * Return ConnectTimeout
60
     *
61
     * @return float
62
     */
63 131
    public function getConnectTimeout()
64
    {
65 131
        return $this->connectTimeout;
66
    }
67
68
    /**
69
     * Return IoTimeout
70
     *
71
     * @return float
72
     */
73 131
    public function getIoTimeout()
74
    {
75 131
        return $this->ioTimeout;
76
    }
77
78
    /**
79
     * Return PreferredEngines
80
     *
81
     * @return string[]
82
     */
83 5
    public function getPreferredEngines()
84
    {
85 5
        return $this->preferredEngines;
86
    }
87
88
    /**
89
     * Key-value array with default values for options
90
     *
91
     * @return array
92
     */
93 136
    private function getDefaultOptions()
94
    {
95 136
        $result        = [];
96 136
        $socketTimeout = (double) ini_get('default_socket_timeout');
97
98 136
        $result[ 'connectTimeout' ]   = $socketTimeout;
99 136
        $result[ 'ioTimeout' ]        = $socketTimeout;
100 136
        $result[ 'preferredEngines' ] = [ 'libevent', 'native' ];
101
102 136
        return $result;
103
    }
104
}
105