1515
1616final class StreamSelectDriver extends AbstractDriver
1717{
18- /** @var resource[]|object[] */
18+ /** @var array<int, resource> */
1919 private array $ readStreams = [];
2020
21- /** @var StreamReadableCallback[][] */
21+ /** @var array<int, array<string, StreamReadableCallback>> */
2222 private array $ readCallbacks = [];
2323
24- /** @var resource[]|object[] */
24+ /** @var array<int, resource> */
2525 private array $ writeStreams = [];
2626
27- /** @var StreamWritableCallback[][] */
27+ /** @var array<int, array<string, StreamWritableCallback>> */
2828 private array $ writeCallbacks = [];
2929
3030 private readonly TimerQueue $ timerQueue ;
3131
32- /** @var SignalCallback[][] */
32+ /** @var array<int, array<string, SignalCallback>> */
3333 private array $ signalCallbacks = [];
3434
3535 /** @var \SplQueue<int> */
@@ -49,7 +49,7 @@ public function __construct()
4949 $ this ->timerQueue = new TimerQueue ();
5050 $ this ->signalHandling = \extension_loaded ("pcntl " );
5151
52- $ this ->streamSelectErrorHandler = function ($ errno , $ message ) {
52+ $ this ->streamSelectErrorHandler = function (int $ errno , string $ message ): void {
5353 // Casing changed in PHP 8 from 'unable' to 'Unable'
5454 if (\stripos ($ message , "stream_select(): unable to select [4]: " ) === 0 ) { // EINTR
5555 $ this ->streamSelectIgnoreResult = true ;
@@ -86,8 +86,6 @@ public function __destruct()
8686 }
8787
8888 /**
89- * {@inheritdoc}
90- *
9189 * @throws UnsupportedFeatureException If the pcntl extension is not available.
9290 */
9391 public function onSignal (int $ signal , \Closure $ closure ): string
@@ -99,9 +97,6 @@ public function onSignal(int $signal, \Closure $closure): string
9997 return parent ::onSignal ($ signal , $ closure );
10098 }
10199
102- /**
103- * {@inheritdoc}
104- */
105100 public function getHandle (): mixed
106101 {
107102 return null ;
@@ -144,9 +139,6 @@ protected function dispatch(bool $blocking): void
144139 }
145140 }
146141
147- /**
148- * {@inheritdoc}
149- */
150142 protected function activate (array $ callbacks ): void
151143 {
152144 foreach ($ callbacks as $ callback ) {
@@ -191,9 +183,6 @@ protected function activate(array $callbacks): void
191183 }
192184 }
193185
194- /**
195- * {@inheritdoc}
196- */
197186 protected function deactivate (DriverCallback $ callback ): void
198187 {
199188 if ($ callback instanceof StreamReadableCallback) {
@@ -232,8 +221,8 @@ protected function deactivate(DriverCallback $callback): void
232221 }
233222
234223 /**
235- * @param resource[]|object[] $read
236- * @param resource[]|object[] $write
224+ * @param array<int, resource> $read
225+ * @param array<int, resource> $write
237226 */
238227 private function selectStreams (array $ read , array $ write , float $ timeout ): void
239228 {
@@ -283,9 +272,7 @@ private function selectStreams(array $read, array $write, float $timeout): void
283272 }
284273 }
285274
286- \assert (\is_array ($ write )); // See https://github.com/vimeo/psalm/issues/3036
287-
288- /** @var resource[]|object[]|null $except */
275+ /** @var array<int, resource>|null $except */
289276 if ($ except ) {
290277 foreach ($ except as $ key => $ socket ) {
291278 $ write [$ key ] = $ socket ;
0 commit comments