Skip to content

Commit d5340b9

Browse files
authored
Merge pull request #3 from reactphp-parallel/transform-work-into-an-interface
Make Work and Result contracts instead of concrete implementations
2 parents fde1000 + c1022c3 commit d5340b9

File tree

10 files changed

+56
-34
lines changed

10 files changed

+56
-34
lines changed

src/Result.php

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,7 @@
44

55
namespace ReactParallel\Pool\Worker;
66

7-
final class Result
7+
interface Result
88
{
9-
private object $result;
10-
11-
public function __construct(object $result)
12-
{
13-
$this->result = $result;
14-
}
15-
16-
public function result(): object
17-
{
18-
return $this->result;
19-
}
9+
public function result(): object;
2010
}

src/Work.php

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,7 @@
44

55
namespace ReactParallel\Pool\Worker;
66

7-
final class Work
7+
interface Work
88
{
9-
private object $result;
10-
11-
public function __construct(object $result)
12-
{
13-
$this->result = $result;
14-
}
15-
16-
public function work(): object
17-
{
18-
return $this->result;
19-
}
9+
public function work(): object;
2010
}

src/Workers/Result.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace ReactParallel\Pool\Worker\Workers;
6+
7+
use ReactParallel\Pool\Worker\Result as ResultContract;
8+
9+
final class Result implements ResultContract
10+
{
11+
private object $result;
12+
13+
public function __construct(object $result)
14+
{
15+
$this->result = $result;
16+
}
17+
18+
public function result(): object
19+
{
20+
return $this->result;
21+
}
22+
}

src/Workers/ReturnWorker.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44

55
namespace ReactParallel\Pool\Worker\Workers;
66

7-
use ReactParallel\Pool\Worker\Result;
8-
use ReactParallel\Pool\Worker\Work;
7+
use ReactParallel\Pool\Worker\Work as WorkContract;
98
use ReactParallel\Pool\Worker\Work\Worker as WorkerInterface;
109

1110
final class ReturnWorker implements WorkerInterface
1211
{
13-
public function perform(Work $work): Result
12+
public function perform(WorkContract $work): Result
1413
{
1514
return new Result($work->work());
1615
}

src/Workers/ThrowingReturnWorker.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44

55
namespace ReactParallel\Pool\Worker\Workers;
66

7-
use ReactParallel\Pool\Worker\Result;
8-
use ReactParallel\Pool\Worker\Work;
7+
use ReactParallel\Pool\Worker\Work as WorkContract;
98
use ReactParallel\Pool\Worker\Work\Worker as WorkerInterface;
109

1110
final class ThrowingReturnWorker implements WorkerInterface
1211
{
13-
public function perform(Work $work): Result
12+
public function perform(WorkContract $work): Result
1413
{
1514
throw new ThrownWork($work);
1615
}

src/Workers/Work.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace ReactParallel\Pool\Worker\Workers;
6+
7+
use ReactParallel\Pool\Worker\Work as WorkContract;
8+
9+
final class Work implements WorkContract
10+
{
11+
private object $work;
12+
13+
public function __construct(object $work)
14+
{
15+
$this->work = $work;
16+
}
17+
18+
public function work(): object
19+
{
20+
return $this->work;
21+
}
22+
}

tests/Thread/PerformerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
use parallel\Runtime;
1010
use ReactParallel\Pool\Worker\Message\Work as WorkMessage;
1111
use ReactParallel\Pool\Worker\Thread\Performer;
12-
use ReactParallel\Pool\Worker\Work;
1312
use ReactParallel\Pool\Worker\Workers\ReturnWorkerFactory;
1413
use ReactParallel\Pool\Worker\Workers\ThrowingReturnWorkerFactory;
14+
use ReactParallel\Pool\Worker\Workers\Work;
1515
use WyriHaximus\AsyncTestUtilities\AsyncTestCase;
1616

1717
use function dirname;

tests/WorkerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
use ReactParallel\EventLoop\EventLoopBridge;
1111
use ReactParallel\Pool\Infinite\Group;
1212
use ReactParallel\Pool\Infinite\Infinite;
13-
use ReactParallel\Pool\Worker\Work;
1413
use ReactParallel\Pool\Worker\Worker;
1514
use ReactParallel\Pool\Worker\Workers\ReturnWorkerFactory;
1615
use ReactParallel\Pool\Worker\Workers\ThrowingReturnWorkerFactory;
1716
use ReactParallel\Pool\Worker\Workers\ThrownWork;
17+
use ReactParallel\Pool\Worker\Workers\Work;
1818
use Throwable;
1919
use WyriHaximus\AsyncTestUtilities\AsyncTestCase;
2020
use WyriHaximus\PoolInfo\Info;

tests/Workers/ReturnTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
namespace ReactParallel\Tests\Pool\Worker\Workers;
66

77
use Money\Money;
8-
use ReactParallel\Pool\Worker\Work;
98
use ReactParallel\Pool\Worker\Workers\ReturnWorkerFactory;
9+
use ReactParallel\Pool\Worker\Workers\Work;
1010
use WyriHaximus\AsyncTestUtilities\AsyncTestCase;
1111

1212
final class ReturnTest extends AsyncTestCase

tests/Workers/ThrowingReturnTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
namespace ReactParallel\Tests\Pool\Worker\Workers;
66

77
use Money\Money;
8-
use ReactParallel\Pool\Worker\Work;
98
use ReactParallel\Pool\Worker\Workers\ThrowingReturnWorkerFactory;
109
use ReactParallel\Pool\Worker\Workers\ThrownWork;
10+
use ReactParallel\Pool\Worker\Workers\Work;
1111
use Throwable;
1212
use WyriHaximus\AsyncTestUtilities\AsyncTestCase;
1313

0 commit comments

Comments
 (0)