1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
<?php
namespace React\Socket;
use Evenement\EventEmitter;
use React\EventLoop\Loop;
use React\EventLoop\LoopInterface;
use Exception;
/**
* @deprecated 1.9.0 See `SocketServer` instead
* @see SocketServer
*/
final class Server extends EventEmitter implements ServerInterface
{
private $server;
/**
* [Deprecated] `Server`
*
* This class exists for BC reasons only and should not be used anymore.
*
* ```php
* // deprecated
* $socket = new React\Socket\Server(0);
* $socket = new React\Socket\Server('127.0.0.1:8000');
* $socket = new React\Socket\Server('127.0.0.1:8000', null, $context);
* $socket = new React\Socket\Server('127.0.0.1:8000', $loop, $context);
*
* // new
* $socket = new React\Socket\SocketServer('127.0.0.1:0');
* $socket = new React\Socket\SocketServer('127.0.0.1:8000');
* $socket = new React\Socket\SocketServer('127.0.0.1:8000', $context);
* $socket = new React\Socket\SocketServer('127.0.0.1:8000', $context, $loop);
* ```
*
* This class takes an optional `LoopInterface|null $loop` parameter that can be used to
* pass the event loop instance to use for this object. You can use a `null` value
* here in order to use the [default loop](https://github.com/reactphp/event-loop#loop).
* This value SHOULD NOT be given unless you're sure you want to explicitly use a
* given event loop instance.
*
* For BC reasons, you can also pass the TCP socket context options as a simple
* array without wrapping this in another array under the `tcp` key.
*
* @param string|int $uri
* @param LoopInterface $loop
* @param array $context
* @deprecated 1.9.0 See `SocketServer` instead
* @see SocketServer
*/
public function __construct($uri, LoopInterface $loop = null, array $context = array())
{
$loop = $loop ?: Loop::get();
// sanitize TCP context options if not properly wrapped
if ($context && (!isset($context['tcp']) && !isset($context['tls']) && !isset($context['unix']))) {
$context = array('tcp' => $context);
}
// apply default options if not explicitly given
$context += array(
'tcp' => array(),
'tls' => array(),
'unix' => array()
);
$scheme = 'tcp';
$pos = \strpos($uri, '://');
if ($pos !== false) {
$scheme = \substr($uri, 0, $pos);
}
if ($scheme === 'unix') {
$server = new UnixServer($uri, $loop, $context['unix']);
} else {
$server = new TcpServer(str_replace('tls://', '', $uri), $loop, $context['tcp']);
if ($scheme === 'tls') {
$server = new SecureServer($server, $loop, $context['tls']);
}
}
$this->server = $server;
$that = $this;
$server->on('connection', function (ConnectionInterface $conn) use ($that) {
$that->emit('connection', array($conn));
});
$server->on('error', function (Exception $error) use ($that) {
$that->emit('error', array($error));
});
}
public function getAddress()
{
return $this->server->getAddress();
}
public function pause()
{
$this->server->pause();
}
public function resume()
{
$this->server->resume();
}
public function close()
{
$this->server->close();
}
}
|