Skip to content

Commit

Permalink
Merge pull request #34 from clue-labs/promise-v3
Browse files Browse the repository at this point in the history
Forward compatibility with upcoming Promise v3
  • Loading branch information
SimonFrings authored Aug 30, 2022
2 parents cff1c7b + e6bcf6f commit 4b263ac
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 12 deletions.
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
},
"require": {
"php": ">=5.3",
"react/socket": "^1.9",
"react/event-loop": "^1.2",
"react/promise": "^2.1 || ^1.2.1",
"react/promise-timer": "^1.1"
"react/promise": "^3 || ^2.1 || ^1.2.1",
"react/promise-timer": "^1.9",
"react/socket": "^1.12"
},
"require-dev": {
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8"
Expand Down
4 changes: 2 additions & 2 deletions src/ConnectionManagerRepeat.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use InvalidArgumentException;
use Exception;
use React\Promise\Promise;
use React\Promise\CancellablePromiseInterface;
use React\Promise\PromiseInterface;

class ConnectionManagerRepeat implements ConnectorInterface
{
Expand Down Expand Up @@ -44,7 +44,7 @@ public function connect($uri)
$tries = 0;
$reject(new \RuntimeException('Cancelled'));

if ($pending instanceof CancellablePromiseInterface) {
if ($pending instanceof PromiseInterface && \method_exists($pending, 'cancel')) {
$pending->cancel();
}
});
Expand Down
6 changes: 2 additions & 4 deletions src/Multiple/ConnectionManagerConcurrent.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,22 @@

namespace ConnectionManager\Extra\Multiple;

use ConnectionManager\Extra\Multiple\ConnectionManagerConsecutive;
use React\Promise;
use React\Promise\CancellablePromiseInterface;
use React\Promise\PromiseInterface;

class ConnectionManagerConcurrent extends ConnectionManagerConsecutive
{
public function connect($uri)
{
$all = array();
foreach ($this->managers as $connector) {
/* @var $connection Connector */
$all []= $connector->connect($uri);
}
return Promise\any($all)->then(function ($conn) use ($all) {
// a connection attempt succeeded
// => cancel all pending connection attempts
foreach ($all as $promise) {
if ($promise instanceof CancellablePromiseInterface) {
if ($promise instanceof PromiseInterface && \method_exists($promise, 'cancel')) {
$promise->cancel();
}

Expand Down
6 changes: 3 additions & 3 deletions src/Multiple/ConnectionManagerConsecutive.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

namespace ConnectionManager\Extra\Multiple;

use React\Socket\ConnectorInterface;
use React\Promise;
use React\Promise\PromiseInterface;
use React\Socket\ConnectorInterface;
use UnderflowException;
use React\Promise\CancellablePromiseInterface;

class ConnectionManagerConsecutive implements ConnectorInterface
{
Expand Down Expand Up @@ -54,7 +54,7 @@ public function tryConnection(array $managers, $uri)
$managers = array();
$reject(new \RuntimeException('Cancelled'));

if ($pending instanceof CancellablePromiseInterface) {
if ($pending instanceof PromiseInterface && \method_exists($pending, 'cancel')) {
$pending->cancel();
}
});
Expand Down

0 comments on commit 4b263ac

Please sign in to comment.