This commit is contained in:
Pavlo Yatsukhnenko
2022-01-16 15:07:30 +02:00
committed by michael-grunder
parent 0719c1eca0
commit 8689ab1c17
4 changed files with 52 additions and 2 deletions
+30
View File
@@ -1162,6 +1162,36 @@ PHP_METHOD(RedisArray, zscan)
ra_generic_scan_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "ZSCAN", sizeof("ZSCAN") - 1);
}
PHP_METHOD(RedisArray, scan)
{
RedisArray *ra;
zend_string *host, *pattern = NULL;
zval *object, *redis_inst, *z_iter, z_fun, z_args[3];
zend_long count = 0;
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Oz/S|S!l",
&object, redis_array_ce, &z_iter, &host, &pattern, &count) == FAILURE) {
RETURN_FALSE;
}
if ((ra = redis_array_get(object)) == NULL) {
RETURN_FALSE;
}
if ((redis_inst = ra_find_node_by_name(ra, host)) == NULL) {
RETURN_FALSE;
}
ZVAL_NEW_REF(&z_args[0], z_iter);
if (pattern) ZVAL_STR(&z_args[1], pattern);
ZVAL_LONG(&z_args[2], count);
ZVAL_STRING(&z_fun, "SCAN");
call_user_function(&redis_ce->function_table, redis_inst, &z_fun, return_value, ZEND_NUM_ARGS() - 1, z_args);
zval_dtor(&z_fun);
ZVAL_ZVAL(z_iter, &z_args[0], 0, 1);
}
PHP_METHOD(RedisArray, multi)
{
+2
View File
@@ -55,6 +55,8 @@ class RedisArray {
public function save(): bool|array;
public function scan(int &$iterator, string $node, ?string $pattern = null, int $count = 0): bool|array;
public function select(int $index): bool|array;
public function setOption(int $opt, string $value): bool|array;
+10 -1
View File
@@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: 16a0857d62817f14eef16a00e80e587f318b9052 */
* Stub hash: 52eb7c6a57cea5f116106d24db1c98c7c4469e09 */
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_RedisArray___call, 0, 2, IS_MIXED, 0)
ZEND_ARG_TYPE_INFO(0, function_name, IS_STRING, 0)
@@ -84,6 +84,13 @@ ZEND_END_ARG_INFO()
#define arginfo_class_RedisArray_save arginfo_class_RedisArray__continuum
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_RedisArray_scan, 0, 2, MAY_BE_BOOL|MAY_BE_ARRAY)
ZEND_ARG_TYPE_INFO(1, iterator, IS_LONG, 0)
ZEND_ARG_TYPE_INFO(0, node, IS_STRING, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, pattern, IS_STRING, 1, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, count, IS_LONG, 0, "0")
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_RedisArray_select, 0, 1, MAY_BE_BOOL|MAY_BE_ARRAY)
ZEND_ARG_TYPE_INFO(0, index, IS_LONG, 0)
ZEND_END_ARG_INFO()
@@ -126,6 +133,7 @@ ZEND_METHOD(RedisArray, mset);
ZEND_METHOD(RedisArray, multi);
ZEND_METHOD(RedisArray, ping);
ZEND_METHOD(RedisArray, save);
ZEND_METHOD(RedisArray, scan);
ZEND_METHOD(RedisArray, select);
ZEND_METHOD(RedisArray, setOption);
ZEND_METHOD(RedisArray, sscan);
@@ -159,6 +167,7 @@ static const zend_function_entry class_RedisArray_methods[] = {
ZEND_ME(RedisArray, multi, arginfo_class_RedisArray_multi, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, ping, arginfo_class_RedisArray_ping, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, save, arginfo_class_RedisArray_save, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, scan, arginfo_class_RedisArray_scan, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, select, arginfo_class_RedisArray_select, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, setOption, arginfo_class_RedisArray_setOption, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, sscan, arginfo_class_RedisArray_sscan, ZEND_ACC_PUBLIC)
+10 -1
View File
@@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: 16a0857d62817f14eef16a00e80e587f318b9052 */
* Stub hash: 52eb7c6a57cea5f116106d24db1c98c7c4469e09 */
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray___call, 0, 0, 2)
ZEND_ARG_INFO(0, function_name)
@@ -81,6 +81,13 @@ ZEND_END_ARG_INFO()
#define arginfo_class_RedisArray_save arginfo_class_RedisArray__continuum
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray_scan, 0, 0, 2)
ZEND_ARG_INFO(1, iterator)
ZEND_ARG_INFO(0, node)
ZEND_ARG_INFO(0, pattern)
ZEND_ARG_INFO(0, count)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray_select, 0, 0, 1)
ZEND_ARG_INFO(0, index)
ZEND_END_ARG_INFO()
@@ -123,6 +130,7 @@ ZEND_METHOD(RedisArray, mset);
ZEND_METHOD(RedisArray, multi);
ZEND_METHOD(RedisArray, ping);
ZEND_METHOD(RedisArray, save);
ZEND_METHOD(RedisArray, scan);
ZEND_METHOD(RedisArray, select);
ZEND_METHOD(RedisArray, setOption);
ZEND_METHOD(RedisArray, sscan);
@@ -156,6 +164,7 @@ static const zend_function_entry class_RedisArray_methods[] = {
ZEND_ME(RedisArray, multi, arginfo_class_RedisArray_multi, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, ping, arginfo_class_RedisArray_ping, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, save, arginfo_class_RedisArray_save, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, scan, arginfo_class_RedisArray_scan, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, select, arginfo_class_RedisArray_select, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, setOption, arginfo_class_RedisArray_setOption, ZEND_ACC_PUBLIC)
ZEND_ME(RedisArray, sscan, arginfo_class_RedisArray_sscan, ZEND_ACC_PUBLIC)