summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php')
-rw-r--r--vendor/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php39
1 files changed, 39 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();
+ }
+}