51 lines
1.4 KiB
PHP
51 lines
1.4 KiB
PHP
<?php
|
|
/**
|
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
* SPDX-License-Identifier: Apache-2.0.
|
|
*/
|
|
namespace AWS\CRT\IO;
|
|
|
|
use AWS\CRT\NativeResource as NativeResource;
|
|
|
|
final class InputStream extends NativeResource {
|
|
private $stream = null;
|
|
|
|
const SEEK_BEGIN = 0;
|
|
const SEEK_END = 2;
|
|
|
|
public function __construct($stream) {
|
|
parent::__construct();
|
|
$this->stream = $stream;
|
|
$options = self::$crt->input_stream_options_new();
|
|
// The stream implementation in native just converts the PHP stream into
|
|
// a native php_stream* and executes operations entirely in native
|
|
self::$crt->input_stream_options_set_user_data($options, $stream);
|
|
$this->acquire(self::$crt->input_stream_new($options));
|
|
self::$crt->input_stream_options_release($options);
|
|
}
|
|
|
|
public function __destruct() {
|
|
$this->release();
|
|
parent::__destruct();
|
|
}
|
|
|
|
public function eof() {
|
|
return self::$crt->input_stream_eof($this->native);
|
|
}
|
|
|
|
public function length() {
|
|
return self::$crt->input_stream_get_length($this->native);
|
|
}
|
|
|
|
public function read($length = 0) {
|
|
if ($length == 0) {
|
|
$length = $this->length();
|
|
}
|
|
return self::$crt->input_stream_read($this->native, $length);
|
|
}
|
|
|
|
public function seek($offset, $basis) {
|
|
return self::$crt->input_stream_seek($this->native, $offset, $basis);
|
|
}
|
|
}
|