File tree 6 files changed +53
-34
lines changed
6 files changed +53
-34
lines changed Original file line number Diff line number Diff line change 1
- <?php declare (strict_types= 1 );
1
+ <?php
2
2
3
+ declare (strict_types=1 );
3
4
namespace seregazhuk \PhpWatcher \Filesystem ;
4
5
5
- use Evenement \EventEmitter ;
6
- use React \ChildProcess \Process ;
7
- use React \EventLoop \LoopInterface ;
8
- use RuntimeException ;
9
6
use seregazhuk \PhpWatcher \Config \WatchList ;
10
7
11
- final class ChangesListener extends EventEmitter
8
+ interface ChangesListener
12
9
{
13
- private const INTERVAL = 0.15 ;
10
+ public function start ( WatchList $ watchList ): void ;
14
11
15
- private $ loop ;
16
-
17
- public function __construct (LoopInterface $ loop )
18
- {
19
- $ this ->loop = $ loop ;
20
- }
21
-
22
- public function start (WatchList $ watchList ): void
23
- {
24
- $ watcher = ResourceWatcherBuilder::create ($ watchList );
25
-
26
- $ this ->loop ->addPeriodicTimer (
27
- self ::INTERVAL ,
28
- function () use ($ watcher ) {
29
- if ($ watcher ->findChanges ()->hasChanges ()) {
30
- $ this ->emit ('change ' );
31
- }
32
- }
33
- );
34
- }
12
+ public function onChange (callable $ callback ): void ;
35
13
}
Original file line number Diff line number Diff line change
1
+ <?php declare (strict_types=1 );
2
+
3
+ namespace seregazhuk \PhpWatcher \Filesystem \ResourceWatcherBased ;
4
+
5
+ use Evenement \EventEmitter ;
6
+ use React \EventLoop \LoopInterface ;
7
+ use seregazhuk \PhpWatcher \Config \WatchList ;
8
+
9
+ final class ChangesListener extends EventEmitter implements
10
+ \seregazhuk \PhpWatcher \Filesystem \ChangesListener
11
+ {
12
+ private const INTERVAL = 0.15 ;
13
+
14
+ private $ loop ;
15
+
16
+ public function __construct (LoopInterface $ loop )
17
+ {
18
+ $ this ->loop = $ loop ;
19
+ }
20
+
21
+ public function start (WatchList $ watchList ): void
22
+ {
23
+ $ watcher = ResourceWatcherBuilder::create ($ watchList );
24
+
25
+ $ this ->loop ->addPeriodicTimer (
26
+ self ::INTERVAL ,
27
+ function () use ($ watcher ) {
28
+ if ($ watcher ->findChanges ()->hasChanges ()) {
29
+ $ this ->emit ('change ' );
30
+ }
31
+ }
32
+ );
33
+ }
34
+
35
+ public function onChange (callable $ callback ): void
36
+ {
37
+ $ this ->on ('change ' , $ callback );
38
+ }
39
+ }
Original file line number Diff line number Diff line change 1
1
<?php declare (strict_types=1 );
2
2
3
- namespace seregazhuk \PhpWatcher \Filesystem ;
3
+ namespace seregazhuk \PhpWatcher \Filesystem \ ResourceWatcherBased ;
4
4
5
5
use seregazhuk \PhpWatcher \Config \WatchList ;
6
+ use seregazhuk \PhpWatcher \Filesystem \WatchPath ;
6
7
use Symfony \Component \Finder \Finder ;
7
8
use Yosymfony \ResourceWatcher \Crc32ContentHash ;
8
9
use Yosymfony \ResourceWatcher \ResourceCacheMemory ;
Original file line number Diff line number Diff line change 1
1
<?php
2
+
2
3
declare (strict_types=1 );
3
4
4
5
namespace seregazhuk \PhpWatcher ;
5
6
6
7
use React \EventLoop \LoopInterface ;
7
8
use seregazhuk \PhpWatcher \Config \WatchList ;
8
- use seregazhuk \PhpWatcher \Filesystem \ChangesListener ;
9
+ use seregazhuk \PhpWatcher \Filesystem \ResourceWatcherBased \ ChangesListener ;
9
10
10
11
final class Watcher
11
12
{
@@ -28,8 +29,7 @@ public function startWatching(
28
29
$ processRunner ->start ();
29
30
30
31
$ this ->filesystemListener ->start ($ watchList );
31
- $ this ->filesystemListener ->on (
32
- 'change ' ,
32
+ $ this ->filesystemListener ->onChange (
33
33
static function () use ($ processRunner , $ signal , $ delayToRestart ) {
34
34
$ processRunner ->stop ($ signal );
35
35
$ processRunner ->restart ($ delayToRestart );
Original file line number Diff line number Diff line change 9
9
use seregazhuk \PhpWatcher \Config \Builder ;
10
10
use seregazhuk \PhpWatcher \Config \Config ;
11
11
use seregazhuk \PhpWatcher \Config \InputExtractor ;
12
- use seregazhuk \PhpWatcher \Filesystem \ChangesListener ;
12
+ use seregazhuk \PhpWatcher \Filesystem \ResourceWatcherBased \ ChangesListener ;
13
13
use seregazhuk \PhpWatcher \Screen \Screen ;
14
14
use seregazhuk \PhpWatcher \Screen \SpinnerFactory ;
15
15
use Symfony \Component \Console \Command \Command as BaseCommand ;
Original file line number Diff line number Diff line change 5
5
use PHPUnit \Framework \TestCase ;
6
6
use React \EventLoop \Factory ;
7
7
use seregazhuk \PhpWatcher \Config \WatchList ;
8
- use seregazhuk \PhpWatcher \Filesystem \ChangesListener ;
8
+ use seregazhuk \PhpWatcher \Filesystem \ResourceWatcherBased \ ChangesListener ;
9
9
use seregazhuk \PhpWatcher \Tests \Feature \Helper \Filesystem ;
10
10
use seregazhuk \PhpWatcher \Tests \Feature \Helper \WithFilesystem ;
11
- use function \Clue \React \Block \sleep ;
11
+
12
+ use function Clue \React \Block \sleep ;
12
13
13
14
final class ChangesListenerTest extends TestCase
14
15
{
You can’t perform that action at this time.
0 commit comments