Skip to content

Commit 14024f0

Browse files
committed
Package split: EMessenger
1 parent 7f3b81f commit 14024f0

23 files changed

+127
-339
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ install:
1010
cache:
1111
directories:
1212
- vendor
13+
script:
14+
- php examples/simple.php

EProcess/Adapter/BaseAdapter.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace EProcess\Adapter;
44

5+
use EMessenger\Transport\UnixTransport;
56
use React\EventLoop\LoopInterface;
67

78
abstract class BaseAdapter
@@ -20,7 +21,12 @@ public function getUnixSocketFile()
2021
return sprintf('%s/%s.sock', EPROCESS_SOCKET_DIR, $this->node);
2122
}
2223

23-
protected function createUnixSocket()
24+
public function getUnixSocketAddress()
25+
{
26+
return sprintf('unix://%s', $this->getUnixSocketFile());
27+
}
28+
29+
protected function createUnixTransport()
2430
{
2531
if (!defined('EPROCESS_SOCKET_DIR')) {
2632
throw new \RuntimeException('EPROCESS_SOCKET_DIR is not defined.');
@@ -34,9 +40,10 @@ protected function createUnixSocket()
3440
throw new \RuntimeException(sprintf('Cannot write to "%s".', EPROCESS_SOCKET_DIR));
3541
}
3642

37-
$unix = sprintf('unix://%s', $this->getUnixSocketFile());
43+
echo $this->getUnixSocketFile();
44+
echo PHP_EOL;
3845

39-
return $unix;
46+
return new UnixTransport($this->loop, $this->getUnixSocketAddress());
4047
}
4148

4249
abstract public function create($class, array $data = []);

EProcess/Adapter/ChildProcess.php

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
namespace EProcess\Adapter;
44

5-
use EProcess\Behaviour\UniversalSerializer;
6-
use EProcess\MessengerFactory;
5+
use UniversalSerializer\UniversalSerializerTrait;
6+
use EMessenger\MessengerFactory;
77
use EProcess\Stream\FullDrainStream;
88
use React\ChildProcess\Process;
99
use Symfony\Component\Process\PhpExecutableFinder;
1010

1111
class ChildProcess extends BaseAdapter
1212
{
13-
use UniversalSerializer;
13+
use UniversalSerializerTrait;
1414

1515
private $script = <<<PHP
1616
<?php
@@ -19,15 +19,15 @@ class ChildProcess extends BaseAdapter
1919
2020
set_time_limit(0);
2121
22-
use EProcess\MessengerFactory;
22+
use EMessenger\MessengerFactory;
23+
use EMessenger\Transport\UnixTransport;
2324
use EProcess\Application\ApplicationFactory;
2425
use React\EventLoop\Factory;
2526
2627
\$loop = Factory::create();
2728
2829
\$messenger = MessengerFactory::client(
29-
'%s',
30-
\$loop
30+
new UnixTransport(\$loop, '%s')
3131
);
3232
3333
\$application = ApplicationFactory::create('%s');
@@ -36,7 +36,7 @@ class ChildProcess extends BaseAdapter
3636
\$application->loop(\$loop);
3737
\$application->data(\$application->unserialize(base64_decode('%s')));
3838
39-
\$messenger->emit('initialized', true);
39+
\$messenger->send('initialized', true);
4040
4141
try {
4242
\$application->run();
@@ -56,13 +56,13 @@ public function create($class, array $data = [])
5656
throw new \RuntimeException('Unable to find the PHP executable.');
5757
}
5858

59-
$unix = $this->createUnixSocket();
60-
$messenger = MessengerFactory::server($unix, $this->loop);
59+
$transport = $this->createUnixTransport();
60+
$messenger = MessengerFactory::server($transport);
6161

6262
$script = sprintf(
6363
$this->script,
6464
EPROCESS_AUTOLOAD,
65-
$unix,
65+
$this->getUnixSocketAddress(),
6666
$class,
6767
base64_encode($this->serialize($data))
6868
);
@@ -77,15 +77,15 @@ public function create($class, array $data = [])
7777

7878
$this->process->stdin->write($script);
7979

80-
$this->process->stdin->on('full-drain', function() {
80+
$this->process->stdin->on('full-drain', function () {
8181
$this->process->stdin->close();
8282
});
8383

84-
$this->process->stdout->on('data', function($data) {
84+
$this->process->stdout->on('data', function ($data) {
8585
echo $data;
8686
});
8787

88-
$this->process->stderr->on('data', function($data) {
88+
$this->process->stderr->on('data', function ($data) {
8989
echo $data;
9090
});
9191

EProcess/Adapter/PThreads.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22

33
namespace EProcess\Adapter;
44

5-
use EProcess\MessengerFactory;
5+
use EMessenger\MessengerFactory;
66

77
class PThreads extends BaseAdapter
88
{
99
private $process;
1010

1111
public function create($class, array $data = [])
1212
{
13-
$unix = $this->createUnixSocket();
14-
$messenger = MessengerFactory::server($unix, $this->loop);
13+
$transport = $this->createUnixTransport();
14+
$messenger = MessengerFactory::server($transport);
1515

16-
$this->process = new Thread($unix, $class, $data);
16+
$this->process = new Thread($transport, $class, $data);
1717
$this->process->start(PTHREADS_INHERIT_NONE);
1818

1919
return $messenger;

EProcess/Adapter/SymfonyProcess.php

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

33
namespace EProcess\Adapter;
44

5-
use EProcess\Behaviour\UniversalSerializer;
65
use Symfony\Component\Process\PhpProcess;
7-
use EProcess\MessengerFactory;
6+
use EMessenger\MessengerFactory;
7+
use UniversalSerializer\UniversalSerializerTrait;
88

99
class SymfonyProcess extends BaseAdapter
1010
{
11-
use UniversalSerializer;
11+
use UniversalSerializerTrait;
1212

1313
private $script = <<<PHP
1414
<?php
@@ -34,7 +34,7 @@ class SymfonyProcess extends BaseAdapter
3434
\$application->loop(\$loop);
3535
\$application->data(\$application->unserialize(base64_decode('%s')));
3636
37-
\$messenger->emit('initialized', true);
37+
\$messenger->send('initialized', true);
3838
3939
try {
4040
\$application->run();
@@ -48,10 +48,15 @@ class SymfonyProcess extends BaseAdapter
4848

4949
public function create($class, array $data = [])
5050
{
51-
$unix = $this->createUnixSocket();
52-
$messenger = MessengerFactory::server($unix, $this->loop);
53-
54-
$script = sprintf($this->script, EPROCESS_AUTOLOAD, $unix, $class, base64_encode($this->serialize($data)));
51+
$transport = $this->createUnixTransport();
52+
$messenger = MessengerFactory::server($transport);
53+
54+
$script = sprintf(
55+
$this->script,
56+
EPROCESS_AUTOLOAD,
57+
$transport, $class,
58+
base64_encode($this->serialize($data))
59+
);
5560

5661
$this->process = new PhpProcess($script);
5762
$this->process->start();

EProcess/Adapter/Thread.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public function run()
3232
$application->loop($loop);
3333
$application->data($this->data);
3434

35-
$messenger->emit('initialized', true);
35+
$messenger->send('initialized', true);
3636

3737
try {
3838
$application->run();

EProcess/Application/Application.php

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,19 @@
22

33
namespace EProcess\Application;
44

5-
use EProcess\Behaviour\UniversalSerializer;
5+
use EMessenger\Message;
6+
use EMessenger\Messenger;
67
use EProcess\Behaviour\Workable;
7-
use EProcess\Message;
8-
use EProcess\Messenger;
98
use EProcess\Worker;
109
use Evenement\EventEmitterTrait;
1110
use MKraemer\ReactPCNTL\PCNTL;
1211
use React\EventLoop\LoopInterface;
12+
use UniversalSerializer\UniversalSerializerTrait;
1313

1414
abstract class Application
1515
{
16-
use EventEmitterTrait {
17-
EventEmitterTrait::emit as emitterEmit;
18-
}
19-
use UniversalSerializer;
16+
use EventEmitterTrait;
17+
use UniversalSerializerTrait;
2018
use Workable;
2119

2220
private $loop;
@@ -33,7 +31,7 @@ public function addWorker(Worker $worker)
3331
public function cleanWorkers()
3432
{
3533
foreach ($this->workers as $worker) {
36-
$worker->emit('shutdown');
34+
$worker->send('shutdown');
3735
unlink($worker->adapter()->getUnixSocketFile());
3836
}
3937
}
@@ -60,7 +58,7 @@ public function messenger(Messenger $messenger = null)
6058
{
6159
if ($messenger) {
6260
$messenger->on('message', function (Message $message) {
63-
$this->emitterEmit($message->getEvent(), [$message->getContent()]);
61+
$this->emit($message->getEvent(), [$message->getContent()]);
6462
});
6563

6664
$this->messenger = $messenger;
@@ -78,9 +76,9 @@ public function data(array $data = null)
7876
return $this->data;
7977
}
8078

81-
public function emit($event, $data = '')
79+
public function send($event, $data = '')
8280
{
83-
$this->messenger->emit($event, $data);
81+
$this->messenger->send($event, $data);
8482
}
8583

8684
abstract public function run();

EProcess/Behaviour/UniversalSerializer.php

Lines changed: 0 additions & 96 deletions
This file was deleted.

EProcess/Behaviour/Workable.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public function createWorker($fqcn, array $data = [])
1515
$data
1616
);
1717

18-
$this->emitterEmit('worker.created', [$worker]);
18+
$this->emit('worker.created', [$worker]);
1919

2020
return $worker;
2121
}

0 commit comments

Comments
 (0)