Pandabot/vendor/danog/ipc
2024-11-29 16:19:39 +01:00
..
.github/workflows Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
examples Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
lib Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
test Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
.gitignore Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
.php-cs-fixer.dist.php Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
composer.json Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
CONTRIBUTING.md Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
LICENSE Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
phpunit.xml.dist Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
psalm.xml Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00
README.md Reupload due to DCMA takedowns. btfo DMCA clowns. Liberty Internet. 2024-11-29 16:19:39 +01:00

IPC

Continuous Integration License

danog/ipc provides an async IPC server.

Installation

composer require danog/ipc

Example

Server:

<?php

require 'vendor/autoload.php';

use Amp\Ipc\Sync\ChannelledSocket;
use Amp\Loop;

use function Amp\asyncCall;
use function Amp\Ipc\listen;

Loop::run(static function () {
    $clientHandler = function (ChannelledSocket $socket) {
        echo "Accepted connection".PHP_EOL;

        while ($payload = yield $socket->receive()) {
            echo "Received $payload".PHP_EOL;
            if ($payload === 'ping') {
                yield $socket->send('pong');
                yield $socket->disconnect();
            }
        }
        echo "Closed connection".PHP_EOL."==========".PHP_EOL;
    };

    $server = listen(\sys_get_temp_dir().'/test');
    while ($socket = yield $server->accept()) {
        asyncCall($clientHandler, $socket);
    }
});

Client:

<?php

require 'vendor/autoload.php';

use Amp\Ipc\Sync\ChannelledSocket;
use Amp\Loop;

use function Amp\asyncCall;
use function Amp\Ipc\connect;

Loop::run(static function () {
    $clientHandler = function (ChannelledSocket $socket) {
        echo "Created connection.".PHP_EOL;

        while ($payload = yield $socket->receive()) {
            echo "Received $payload".PHP_EOL;
        }
        echo "Closed connection".PHP_EOL;
    };

    $channel = yield connect(\sys_get_temp_dir().'/test');
    asyncCall($clientHandler, $channel);
    yield $channel->send('ping');
});