%PDF- %GIF98; %PNG;
Server : ApacheSystem : Linux host.digitalbabaji.in 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : addictionfreeind ( 1003) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system Directory : /home/addictionfreeind/www/admin1/vendor/laminas/laminas-diactoros/src/ |
Upload File : |
<?php
declare(strict_types=1);
namespace Laminas\Diactoros;
use Psr\Http\Message\StreamInterface;
use Stringable;
use const SEEK_SET;
/**
* Wrapper for default Stream class, representing subpart (starting from given offset) of initial stream.
* It can be used to avoid copying full stream, conserving memory.
*
* @see AbstractSerializer::splitStream()
*/
final class RelativeStream implements StreamInterface, Stringable
{
private int $offset;
public function __construct(private StreamInterface $decoratedStream, ?int $offset)
{
$this->offset = (int) $offset;
}
/**
* {@inheritdoc}
*/
public function __toString(): string
{
if ($this->isSeekable()) {
$this->seek(0);
}
return $this->getContents();
}
/**
* {@inheritdoc}
*/
public function close(): void
{
$this->decoratedStream->close();
}
/**
* {@inheritdoc}
*/
public function detach()
{
return $this->decoratedStream->detach();
}
/**
* {@inheritdoc}
*/
public function getSize(): int
{
return $this->decoratedStream->getSize() - $this->offset;
}
/**
* {@inheritdoc}
*/
public function tell(): int
{
return $this->decoratedStream->tell() - $this->offset;
}
/**
* {@inheritdoc}
*/
public function eof(): bool
{
return $this->decoratedStream->eof();
}
/**
* {@inheritdoc}
*/
public function isSeekable(): bool
{
return $this->decoratedStream->isSeekable();
}
/**
* {@inheritdoc}
*/
public function seek(int $offset, int $whence = SEEK_SET): void
{
if ($whence === SEEK_SET) {
$this->decoratedStream->seek($offset + $this->offset, $whence);
return;
}
$this->decoratedStream->seek($offset, $whence);
}
/**
* {@inheritdoc}
*/
public function rewind(): void
{
$this->seek(0);
}
/**
* {@inheritdoc}
*/
public function isWritable(): bool
{
return $this->decoratedStream->isWritable();
}
/**
* {@inheritdoc}
*/
public function write(string $string): int
{
if ($this->tell() < 0) {
throw new Exception\InvalidStreamPointerPositionException();
}
return $this->decoratedStream->write($string);
}
/**
* {@inheritdoc}
*/
public function isReadable(): bool
{
return $this->decoratedStream->isReadable();
}
/**
* {@inheritdoc}
*/
public function read(int $length): string
{
if ($this->tell() < 0) {
throw new Exception\InvalidStreamPointerPositionException();
}
return $this->decoratedStream->read($length);
}
/**
* {@inheritdoc}
*/
public function getContents(): string
{
if ($this->tell() < 0) {
throw new Exception\InvalidStreamPointerPositionException();
}
return $this->decoratedStream->getContents();
}
/**
* {@inheritdoc}
*/
public function getMetadata(?string $key = null)
{
return $this->decoratedStream->getMetadata($key);
}
}