Skip to content

Commit 46feda0

Browse files
authored
Merge pull request #182 from clue-labs/default-loop
Simplify usage by supporting new default loop
2 parents a45784f + 28e5df1 commit 46feda0

19 files changed

+103
-127
lines changed

README.md

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,17 @@ factory. All you need to give it is a nameserver, then you can start resolving
3333
names, baby!
3434

3535
```php
36-
$loop = React\EventLoop\Factory::create();
37-
3836
$config = React\Dns\Config\Config::loadSystemConfigBlocking();
3937
if (!$config->nameservers) {
4038
$config->nameservers[] = '8.8.8.8';
4139
}
4240

4341
$factory = new React\Dns\Resolver\Factory();
44-
$dns = $factory->create($config, $loop);
42+
$dns = $factory->create($config);
4543

4644
$dns->resolve('igor.io')->then(function ($ip) {
4745
echo "Host: $ip\n";
4846
});
49-
50-
$loop->run();
5147
```
5248

5349
See also the [first example](examples).
@@ -72,15 +68,13 @@ But there's more.
7268
You can cache results by configuring the resolver to use a `CachedExecutor`:
7369

7470
```php
75-
$loop = React\EventLoop\Factory::create();
76-
7771
$config = React\Dns\Config\Config::loadSystemConfigBlocking();
7872
if (!$config->nameservers) {
7973
$config->nameservers[] = '8.8.8.8';
8074
}
8175

8276
$factory = new React\Dns\Resolver\Factory();
83-
$dns = $factory->createCached($config, $loop);
77+
$dns = $factory->createCached($config);
8478

8579
$dns->resolve('igor.io')->then(function ($ip) {
8680
echo "Host: $ip\n";
@@ -91,8 +85,6 @@ $dns->resolve('igor.io')->then(function ($ip) {
9185
$dns->resolve('igor.io')->then(function ($ip) {
9286
echo "Host: $ip\n";
9387
});
94-
95-
$loop->run();
9688
```
9789

9890
If the first call returns before the second, only one query will be executed.
@@ -110,9 +102,8 @@ You can also specify a custom cache implementing [`CacheInterface`](https://gith
110102

111103
```php
112104
$cache = new React\Cache\ArrayCache();
113-
$loop = React\EventLoop\Factory::create();
114105
$factory = new React\Dns\Resolver\Factory();
115-
$dns = $factory->createCached('8.8.8.8', $loop, $cache);
106+
$dns = $factory->createCached('8.8.8.8', null, $cache);
116107
```
117108

118109
See also the wiki for possible [cache implementations](https://github.com/reactphp/react/wiki/Users#cache-implementations).
@@ -215,8 +206,7 @@ For more advanced usages one can utilize this class directly.
215206
The following example looks up the `IPv6` address for `igor.io`.
216207

217208
```php
218-
$loop = Factory::create();
219-
$executor = new UdpTransportExecutor('8.8.8.8:53', $loop);
209+
$executor = new UdpTransportExecutor('8.8.8.8:53');
220210

221211
$executor->query(
222212
new Query($name, Message::TYPE_AAAA, Message::CLASS_IN)
@@ -225,8 +215,6 @@ $executor->query(
225215
echo 'IPv6: ' . $answer->data . PHP_EOL;
226216
}
227217
}, 'printf');
228-
229-
$loop->run();
230218
```
231219

232220
See also the [fourth example](examples).
@@ -236,9 +224,8 @@ want to use this in combination with a `TimeoutExecutor` like this:
236224

237225
```php
238226
$executor = new TimeoutExecutor(
239-
new UdpTransportExecutor($nameserver, $loop),
240-
3.0,
241-
$loop
227+
new UdpTransportExecutor($nameserver),
228+
3.0
242229
);
243230
```
244231

@@ -249,9 +236,8 @@ combination with a `RetryExecutor` like this:
249236
```php
250237
$executor = new RetryExecutor(
251238
new TimeoutExecutor(
252-
new UdpTransportExecutor($nameserver, $loop),
253-
3.0,
254-
$loop
239+
new UdpTransportExecutor($nameserver),
240+
3.0
255241
)
256242
);
257243
```
@@ -268,9 +254,8 @@ a `CoopExecutor` like this:
268254
$executor = new CoopExecutor(
269255
new RetryExecutor(
270256
new TimeoutExecutor(
271-
new UdpTransportExecutor($nameserver, $loop),
272-
3.0,
273-
$loop
257+
new UdpTransportExecutor($nameserver),
258+
3.0
274259
)
275260
)
276261
);
@@ -293,8 +278,7 @@ For more advanced usages one can utilize this class directly.
293278
The following example looks up the `IPv6` address for `reactphp.org`.
294279

295280
```php
296-
$loop = Factory::create();
297-
$executor = new TcpTransportExecutor('8.8.8.8:53', $loop);
281+
$executor = new TcpTransportExecutor('8.8.8.8:53');
298282

299283
$executor->query(
300284
new Query($name, Message::TYPE_AAAA, Message::CLASS_IN)
@@ -303,8 +287,6 @@ $executor->query(
303287
echo 'IPv6: ' . $answer->data . PHP_EOL;
304288
}
305289
}, 'printf');
306-
307-
$loop->run();
308290
```
309291

310292
See also [example #92](examples).
@@ -314,9 +296,8 @@ want to use this in combination with a `TimeoutExecutor` like this:
314296

315297
```php
316298
$executor = new TimeoutExecutor(
317-
new TcpTransportExecutor($nameserver, $loop),
318-
3.0,
319-
$loop
299+
new TcpTransportExecutor($nameserver),
300+
3.0
320301
);
321302
```
322303

@@ -342,9 +323,8 @@ combination with a `CoopExecutor` like this:
342323
```php
343324
$executor = new CoopExecutor(
344325
new TimeoutExecutor(
345-
new TcpTransportExecutor($nameserver, $loop),
346-
3.0,
347-
$loop
326+
new TcpTransportExecutor($nameserver),
327+
3.0
348328
)
349329
);
350330
```
@@ -412,7 +392,7 @@ use this code:
412392
```php
413393
$hosts = \React\Dns\Config\HostsFile::loadFromPathBlocking();
414394

415-
$executor = new UdpTransportExecutor('8.8.8.8:53', $loop);
395+
$executor = new UdpTransportExecutor('8.8.8.8:53');
416396
$executor = new HostsFileExecutor($hosts, $executor);
417397

418398
$executor->query(

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"require": {
2929
"php": ">=5.3.0",
3030
"react/cache": "^1.0 || ^0.6 || ^0.5",
31-
"react/event-loop": "^1.0 || ^0.5",
31+
"react/event-loop": "^1.2",
3232
"react/promise": "^3.0 || ^2.7 || ^1.2.1",
3333
"react/promise-timer": "^1.2"
3434
},

examples/01-one.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,16 @@
55

66
require __DIR__ . '/../vendor/autoload.php';
77

8-
$loop = React\EventLoop\Factory::create();
9-
108
$config = Config::loadSystemConfigBlocking();
119
if (!$config->nameservers) {
1210
$config->nameservers[] = '8.8.8.8';
1311
}
1412

1513
$factory = new Factory();
16-
$resolver = $factory->create($config, $loop);
14+
$resolver = $factory->create($config);
1715

1816
$name = isset($argv[1]) ? $argv[1] : 'www.google.com';
1917

2018
$resolver->resolve($name)->then(function ($ip) use ($name) {
2119
echo 'IP for ' . $name . ': ' . $ip . PHP_EOL;
2220
}, 'printf');
23-
24-
$loop->run();

examples/02-concurrent.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,13 @@
55

66
require __DIR__ . '/../vendor/autoload.php';
77

8-
$loop = React\EventLoop\Factory::create();
9-
108
$config = Config::loadSystemConfigBlocking();
119
if (!$config->nameservers) {
1210
$config->nameservers[] = '8.8.8.8';
1311
}
1412

1513
$factory = new Factory();
16-
$resolver = $factory->create($config, $loop);
14+
$resolver = $factory->create($config);
1715

1816
$names = array_slice($argv, 1);
1917
if (!$names) {
@@ -25,5 +23,3 @@
2523
echo 'IP for ' . $name . ': ' . $ip . PHP_EOL;
2624
}, 'printf');
2725
}
28-
29-
$loop->run();

examples/03-cached.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,38 @@
22

33
use React\Dns\Config\Config;
44
use React\Dns\Resolver\Factory;
5+
use React\EventLoop\Loop;
56

67
require __DIR__ . '/../vendor/autoload.php';
78

8-
$loop = React\EventLoop\Factory::create();
9-
109
$config = Config::loadSystemConfigBlocking();
1110
if (!$config->nameservers) {
1211
$config->nameservers[] = '8.8.8.8';
1312
}
1413

1514
$factory = new Factory();
16-
$resolver = $factory->createCached($config, $loop);
15+
$resolver = $factory->createCached($config);
1716

1817
$name = isset($argv[1]) ? $argv[1] : 'www.google.com';
1918

2019
$resolver->resolve($name)->then(function ($ip) use ($name) {
2120
echo 'IP for ' . $name . ': ' . $ip . PHP_EOL;
2221
}, 'printf');
2322

24-
$loop->addTimer(1.0, function() use ($name, $resolver) {
23+
Loop::addTimer(1.0, function() use ($name, $resolver) {
2524
$resolver->resolve($name)->then(function ($ip) use ($name) {
2625
echo 'IP for ' . $name . ': ' . $ip . PHP_EOL;
2726
}, 'printf');
2827
});
2928

30-
$loop->addTimer(2.0, function() use ($name, $resolver) {
29+
Loop::addTimer(2.0, function() use ($name, $resolver) {
3130
$resolver->resolve($name)->then(function ($ip) use ($name) {
3231
echo 'IP for ' . $name . ': ' . $ip . PHP_EOL;
3332
}, 'printf');
3433
});
3534

36-
$loop->addTimer(3.0, function() use ($name, $resolver) {
35+
Loop::addTimer(3.0, function() use ($name, $resolver) {
3736
$resolver->resolve($name)->then(function ($ip) use ($name) {
3837
echo 'IP for ' . $name . ': ' . $ip . PHP_EOL;
3938
}, 'printf');
4039
});
41-
42-
$loop->run();

examples/11-all-ips.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,13 @@
66

77
require __DIR__ . '/../vendor/autoload.php';
88

9-
$loop = React\EventLoop\Factory::create();
10-
119
$config = Config::loadSystemConfigBlocking();
1210
if (!$config->nameservers) {
1311
$config->nameservers[] = '8.8.8.8';
1412
}
1513

1614
$factory = new Factory();
17-
$resolver = $factory->create($config, $loop);
15+
$resolver = $factory->create($config);
1816

1917
$name = isset($argv[1]) ? $argv[1] : 'www.google.com';
2018

@@ -29,5 +27,3 @@
2927
}, function (Exception $e) use ($name) {
3028
echo 'No IPv6 addresses for ' . $name . ': ' . $e->getMessage() . PHP_EOL;
3129
});
32-
33-
$loop->run();

examples/12-all-types.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,13 @@
88

99
require __DIR__ . '/../vendor/autoload.php';
1010

11-
$loop = React\EventLoop\Factory::create();
12-
1311
$config = Config::loadSystemConfigBlocking();
1412
if (!$config->nameservers) {
1513
$config->nameservers[] = '8.8.8.8';
1614
}
1715

1816
$factory = new Factory();
19-
$resolver = $factory->create($config, $loop);
17+
$resolver = $factory->create($config);
2018

2119
$name = isset($argv[1]) ? $argv[1] : 'google.com';
2220
$type = constant('React\Dns\Model\Message::TYPE_' . (isset($argv[2]) ? $argv[2] : 'TXT'));
@@ -26,5 +24,3 @@
2624
}, function (Exception $e) {
2725
echo $e->getMessage() . PHP_EOL;
2826
});
29-
30-
$loop->run();

examples/13-reverse-dns.php

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,13 @@
66

77
require __DIR__ . '/../vendor/autoload.php';
88

9-
$loop = React\EventLoop\Factory::create();
10-
119
$config = Config::loadSystemConfigBlocking();
1210
if (!$config->nameservers) {
1311
$config->nameservers[] = '8.8.8.8';
1412
}
1513

1614
$factory = new Factory();
17-
$resolver = $factory->create($config, $loop);
15+
$resolver = $factory->create($config);
1816

1917
$ip = isset($argv[1]) ? $argv[1] : '8.8.8.8';
2018

@@ -33,5 +31,3 @@
3331
}, function (Exception $e) {
3432
echo $e->getMessage() . PHP_EOL;
3533
});
36-
37-
$loop->run();

examples/91-query-a-and-aaaa.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77

88
require __DIR__ . '/../vendor/autoload.php';
99

10-
$loop = Factory::create();
11-
$executor = new UdpTransportExecutor('8.8.8.8:53', $loop);
10+
$executor = new UdpTransportExecutor('8.8.8.8:53');
1211

1312
$name = isset($argv[1]) ? $argv[1] : 'www.google.com';
1413

@@ -25,5 +24,3 @@
2524
echo 'IPv6: ' . $answer->data . PHP_EOL;
2625
}
2726
}, 'printf');
28-
29-
$loop->run();

examples/92-query-any.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111

1212
require __DIR__ . '/../vendor/autoload.php';
1313

14-
$loop = Factory::create();
15-
$executor = new TcpTransportExecutor('8.8.8.8:53', $loop);
14+
$executor = new TcpTransportExecutor('8.8.8.8:53');
1615

1716
$name = isset($argv[1]) ? $argv[1] : 'google.com';
1817

@@ -80,5 +79,3 @@
8079
echo $type . ': ' . $data . PHP_EOL;
8180
}
8281
}, 'printf');
83-
84-
$loop->run();

0 commit comments

Comments
 (0)