# Changelog

## 1.4.0 (2026-04-13)

*   Feature: Improve PHP 8.5+ and PHP 8.4+ support and update test environment.
    (#40, #41 and #43 by @clue)

*   Improve test suite to ensure 100% code coverage and support legacy PHP 7.2 with PHPUnit 8.5.
    (#42 and #44 by @clue)

## 1.3.0 (2022-08-30)

*   Feature: Simplify usage by supporting new default loop.
    (#33 by @SimonFrings)

    ```php
    // old (still supported)
    $connector = new ConnectionManagerTimeout($connector, 3.0, $loop);
    $delayed = new ConnectionManagerDelayed($connector, 0.5, $loop);

    // new (using default loop)
    $connector = new ConnectionManagerTimeout($connector, 3.0);
    $delayed = new ConnectionManagerDelayed($connector, 0.5);
    ```

*   Feature: Full support for PHP 8.1 and PHP 8.2.
    (#36 and #37 by @SimonFrings)

*   Feature: Forward compatibility with upcoming Promise v3.
    (#34 by @clue)

*   Improve test suite and add badge to show number of project installations.
    (#35 by @SimonFrings and #31 by @PaulRotmann)

## 1.2.0 (2020-12-12)

*   Improve test suite and add `.gitattributes` to exclude dev files from exports.
    Prepare PHP 8 support, update to PHPUnit 9 and simplify test matrix.
    (#24, #25 and #26 by @clue and #27, #28, #29 and #30 by @SimonFrings)

## 1.1.0 (2017-08-03)

* Feature: Support custom rejection reason for ConnectionManagerReject
  (#23 by @clue)

  ```php
  $connector = new ConnectionManagerReject(function ($uri) {
      throw new RuntimeException($uri . ' blocked');
  });
  ```

## 1.0.1 (2017-06-23)

* Fix: Ignore URI scheme when matching selective connectors
  (#21 by @clue)

* Fix HHVM build for now again and ignore future HHVM build errors
  (#22 by @clue)

## 1.0.0 (2017-05-09)

* First stable release, now following SemVer

  > Contains no other changes, so it's actually fully compatible with the v0.7 releases.

## 0.7.1 (2017-05-09)

* Fix: Reject promise for invalid URI passed to ConnectionManagerSelective
  (#19 by @clue)

* Feature: Forward compatibility with upcoming Socket v1.0 and v0.8 and
  upcoming EventLoop v1.0 and v0.5
  (#18 and #20 by @clue)

## 0.7.0 (2017-04-10)

* Feature / BC break: Replace deprecated SocketClient with new Socket component
  (#17 by @clue)

  This implies that all connectors from this package now implement the
  `React\Socket\ConnectorInterface` instead of the legacy
  `React\SocketClient\ConnectorInterface`.

## 0.6.0 (2017-04-07)

* Feature / BC break: Update SocketClient to v0.7 or v0.6
  (#16 by @clue)

* Improve test suite by adding PHPUnit to require-dev
  (#15 by @clue)

## 0.5.0 (2016-06-01)

* BC break: Change $retries to $tries
  (#14 by @clue)
  
  ```php
  // old
  // 1 try plus 2 retries => 3 total tries
  $c = new ConnectionManagerRepeat($c, 2);
  
  // new
  // 3 total tries (1 try plus 2 retries)
  $c = new ConnectionManagerRepeat($c, 3);
  ```

* BC break: Timed connectors now use $loop as last argument
  (#13 by @clue)
  
  ```php
  // old
  // $c = new ConnectionManagerDelay($c, $loop, 1.0);
  $c = new ConnectionManagerTimeout($c, $loop, 1.0);
  
  // new
  $c = new ConnectionManagerTimeout($c, 1.0, $loop);
  ```

* BC break: Move all connector lists to the constructor
  (#12 by @clue)

  ```php
  // old
  // $c = new ConnectionManagerConcurrent();
  // $c = new ConnectionManagerRandom();
  $c = new ConnectionManagerConsecutive();
  $c->addConnectionManager($c1);
  $c->addConnectionManager($c2);
  
  // new
  $c = new ConnectionManagerConsecutive(array(
      $c1,
      $c2
  ));
  ```

* BC break: ConnectionManagerSelective now accepts connector list in constructor
  (#11 by @clue)

  ```php
  // old
  $c = new ConnectionManagerSelective();
  $c->addConnectionManagerFor($c1, 'host1');
  $c->addConnectionManagerFor($c2, 'host2');
  
  // new
  $c = new ConnectionManagerSelective(array(
      'host1' => $c1,
      'host2' => $c2
  ));
  ```

## 0.4.0 (2016-05-30)

* Feature: Add `ConnectionManagerConcurrent`
  (#10 by @clue)

* Feature: Support Promise cancellation for all connectors
  (#9 by @clue)

## 0.3.3 (2016-05-29)

* Fix repetitions for `ConnectionManagerRepeat`
  (#8 by @clue)

* First class support for PHP 5.3 through PHP 7 and HHVM
  (#7 by @clue)

## 0.3.2 (2016-03-19)

* Compatibility with react/socket-client:v0.5 (keeping full BC)
  (#6 by @clue)

## 0.3.1 (2014-09-27)

* Support React PHP v0.4 (while preserving BC with React PHP v0.3)
  (#4)

## 0.3.0 (2013-06-24)

* BC break: Switch from (deprecated) `clue/connection-manager` to `react/socket-client`
  and thus replace each occurance of `getConnect($host, $port)` with `create($host, $port)`
  (#1)
  
* Fix: Timeouts in `ConnectionManagerTimeout` now actually work
  (#1)

* Fix: Properly reject promise in `ConnectionManagerSelective` when no targets
  have been found
  (#1)

## 0.2.0 (2013-02-08)

* Feature: Add `ConnectionManagerSelective` which works like a network/firewall ACL

## 0.1.0 (2013-01-12)

* First tagged release

