5
5
use React \EventLoop \LoopInterface ;
6
6
use React \Dns \Resolver \Resolver ;
7
7
use React \Promise \When ;
8
+ use \Exception ;
8
9
9
10
class Factory
10
11
{
@@ -25,10 +26,9 @@ public function createClient($host, $port)
25
26
$ address = $ factory ->createAddress ($ ip , $ port );
26
27
$ socket = stream_socket_client ('udp:// ' . $ address , $ errno , $ errstr );
27
28
if (!$ socket ) {
28
- die ( " $ errstr ( $ errno) " );
29
+ throw new Exception ( ' Unable to create client socket: ' . $ errstr, $ errno );
29
30
}
30
31
31
-
32
32
return new Client ($ loop , $ socket , $ address );
33
33
});
34
34
}
@@ -39,8 +39,9 @@ public function createServer($port, $host = '127.0.0.1')
39
39
40
40
$ socket = stream_socket_server ("udp:// " . $ address , $ errno , $ errstr , STREAM_SERVER_BIND );
41
41
if (!$ socket ) {
42
- die ( " $ errstr ( $ errno) " );
42
+ return When:: reject ( new Exception ( ' Unable to create server socket: ' . $ errstr, $ errno ));
43
43
}
44
+
44
45
return When::resolve (new Server ($ this ->loop , $ socket , $ address ));
45
46
}
46
47
@@ -55,20 +56,18 @@ protected function resolve($host)
55
56
return When::resolve ('127.0.0.1 ' );
56
57
}
57
58
58
- if ($ resolver === null ) {
59
+ if ($ this -> resolver === null ) {
59
60
return When::reject (\Exception ('No resolver given in order to get IP address for given hostname ' ));
60
61
}
61
62
return $ this ->resolver ->resolve ($ host );
62
63
}
63
64
64
65
public function createAddress ($ host , $ port )
65
66
{
66
- $ address = $ host ;
67
67
if (strpos ($ host , ': ' ) !== false ) {
68
68
// enclose IPv6 address in square brackets
69
- $ address = '[ ' . $ host . '] ' ;
69
+ $ host = '[ ' . $ host . '] ' ;
70
70
}
71
- $ address .= ': ' . $ port ;
72
- return $ address ;
71
+ return $ host . ': ' . $ port ;
73
72
}
74
73
}
0 commit comments