# woocommerce-pos/1.10.7/vendor_prefixed/guzzlehttp/psr7/src/StreamTimeout.php

WCPOS – Point of Sale (POS) plugin for WooCommerce, version 1.10.7. 89 lines.

- Page: https://pluginprobe.com/plugins/woocommerce-pos/1.10.7/code/vendor_prefixed/guzzlehttp/psr7/src/StreamTimeout.php
- Raw: https://pluginprobe.com/plugins/woocommerce-pos/1.10.7/raw/vendor_prefixed/guzzlehttp/psr7/src/StreamTimeout.php
- Modified: 2026-09-01T14:48:10+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/woocommerce-pos/1.10.7/code/vendor_prefixed/guzzlehttp/psr7/src/StreamTimeout.php#L10-L20`.

```php
<?php

declare (strict_types=1);
namespace WCPOS\Vendor\GuzzleHttp\Psr7;

use WCPOS\Vendor\GuzzleHttp\Psr7\Exception\TimeoutException;
use WCPOS\Vendor\Psr\Http\Message\StreamInterface;
/**
 * @internal
 */
final class StreamTimeout
{
    private function __construct()
    {
    }
    public static function read(StreamInterface $stream, int $length, string $timeoutMessage) : string
    {
        try {
            $buffer = $stream->read($length);
        } catch (TimeoutException $e) {
            throw $e;
        } catch (\RuntimeException $e) {
            self::throwIfReadTimedOut($stream, $timeoutMessage, $e);
            throw $e;
        }
        if ($buffer === '') {
            self::throwIfReadTimedOut($stream, $timeoutMessage);
        }
        return $buffer;
    }
    public static function throwIfReadTimedOut(StreamInterface $stream, string $message, ?\Throwable $previous = null) : void
    {
        if (self::isReadTimedOut($stream)) {
            throw new TimeoutException($message, 0, $previous);
        }
    }
    public static function throwIfWriteTimedOut(StreamInterface $stream, ?\Throwable $previous = null) : void
    {
        if (self::isWriteTimedOut($stream)) {
            throw new TimeoutException('Unable to write to stream: timed out', 0, $previous);
        }
    }
    public static function isReadTimedOut(StreamInterface $stream) : bool
    {
        try {
            if ($stream->getMetadata('timed_out') !== \true) {
                return \false;
            }
            return !$stream->eof();
        } catch (\Throwable $e) {
            return \false;
        }
    }
    public static function isWriteTimedOut(StreamInterface $stream) : bool
    {
        try {
            return $stream->getMetadata('timed_out') === \true;
        } catch (\Throwable $e) {
            return \false;
        }
    }
    /**
     * @param resource $resource
     */
    public static function isResourceReadTimedOut($resource) : bool
    {
        try {
            /** @var array<string, mixed> $metadata */
            $metadata = \stream_get_meta_data($resource);
            return ($metadata['timed_out'] ?? \false) === \true && !\feof($resource);
        } catch (\Throwable $e) {
            return \false;
        }
    }
    /**
     * @param resource $resource
     */
    public static function isResourceWriteTimedOut($resource) : bool
    {
        try {
            /** @var array<string, mixed> $metadata */
            $metadata = \stream_get_meta_data($resource);
            return ($metadata['timed_out'] ?? \false) === \true;
        } catch (\Throwable $e) {
            return \false;
        }
    }
}

```
