diff options
author | Andrew Dolgov <[email protected]> | 2022-11-23 21:14:33 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2022-11-23 21:14:33 +0300 |
commit | 0c8af4992cb0f7589dcafaad65ada12753c64594 (patch) | |
tree | 18e83d068c3e7dd2499331de977782b382279396 /vendor/aws/aws-crt-php/src/AWS/CRT/IO |
initial
Diffstat (limited to 'vendor/aws/aws-crt-php/src/AWS/CRT/IO')
-rw-r--r-- | vendor/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php | 39 | ||||
-rw-r--r-- | vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php | 49 |
2 files changed, 88 insertions, 0 deletions
diff --git a/vendor/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php b/vendor/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php new file mode 100644 index 0000000..7e989e7 --- /dev/null +++ b/vendor/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php @@ -0,0 +1,39 @@ +<?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; +use AWS\CRT\Options as Options; + +/** + * Represents 1 or more event loops (1 per thread) for doing I/O and background tasks. + * Typically, every application has one EventLoopGroup. + * + * @param array options: + * - int num_threads - Number of worker threads in the EventLoopGroup. Defaults to 0/1 per logical core. + */ +final class EventLoopGroup extends NativeResource { + + static function defaults() { + return [ + 'max_threads' => 0, + ]; + } + + function __construct(array $options = []) { + parent::__construct(); + $options = new Options($options, self::defaults()); + $elg_options = self::$crt->event_loop_group_options_new(); + self::$crt->event_loop_group_options_set_max_threads($elg_options, $options->getInt('max_threads')); + $this->acquire(self::$crt->event_loop_group_new($elg_options)); + self::$crt->event_loop_group_options_release($elg_options); + } + + function __destruct() { + self::$crt->event_loop_group_release($this->release()); + parent::__destruct(); + } +} diff --git a/vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php b/vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php new file mode 100644 index 0000000..ae5fd46 --- /dev/null +++ b/vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php @@ -0,0 +1,49 @@ +<?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) { + $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() { + self::$crt->input_stream_release($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); + } +} |