Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8689ab1

Browse files
yatsukhnenkomichael-grunder
authored andcommitted
Issue #1393
1 parent 0719c1e commit 8689ab1

4 files changed

Lines changed: 52 additions & 2 deletions

File tree

redis_array.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,6 +1162,36 @@ PHP_METHOD(RedisArray, zscan)
11621162
ra_generic_scan_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "ZSCAN", sizeof("ZSCAN") - 1);
11631163
}
11641164

1165+
PHP_METHOD(RedisArray, scan)
1166+
{
1167+
RedisArray *ra;
1168+
zend_string *host, *pattern = NULL;
1169+
zval *object, *redis_inst, *z_iter, z_fun, z_args[3];
1170+
zend_long count = 0;
1171+
1172+
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Oz/S|S!l",
1173+
&object, redis_array_ce, &z_iter, &host, &pattern, &count) == FAILURE) {
1174+
RETURN_FALSE;
1175+
}
1176+
1177+
if ((ra = redis_array_get(object)) == NULL) {
1178+
RETURN_FALSE;
1179+
}
1180+
1181+
if ((redis_inst = ra_find_node_by_name(ra, host)) == NULL) {
1182+
RETURN_FALSE;
1183+
}
1184+
1185+
ZVAL_NEW_REF(&z_args[0], z_iter);
1186+
if (pattern) ZVAL_STR(&z_args[1], pattern);
1187+
ZVAL_LONG(&z_args[2], count);
1188+
1189+
ZVAL_STRING(&z_fun, "SCAN");
1190+
call_user_function(&redis_ce->function_table, redis_inst, &z_fun, return_value, ZEND_NUM_ARGS() - 1, z_args);
1191+
zval_dtor(&z_fun);
1192+
1193+
ZVAL_ZVAL(z_iter, &z_args[0], 0, 1);
1194+
}
11651195

11661196
PHP_METHOD(RedisArray, multi)
11671197
{

redis_array.stub.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ public function ping(): bool|array;
5555

5656
public function save(): bool|array;
5757

58+
public function scan(int &$iterator, string $node, ?string $pattern = null, int $count = 0): bool|array;
59+
5860
public function select(int $index): bool|array;
5961

6062
public function setOption(int $opt, string $value): bool|array;

redis_array_arginfo.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 16a0857d62817f14eef16a00e80e587f318b9052 */
2+
* Stub hash: 52eb7c6a57cea5f116106d24db1c98c7c4469e09 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_RedisArray___call, 0, 2, IS_MIXED, 0)
55
ZEND_ARG_TYPE_INFO(0, function_name, IS_STRING, 0)
@@ -84,6 +84,13 @@ ZEND_END_ARG_INFO()
8484

8585
#define arginfo_class_RedisArray_save arginfo_class_RedisArray__continuum
8686

87+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_RedisArray_scan, 0, 2, MAY_BE_BOOL|MAY_BE_ARRAY)
88+
ZEND_ARG_TYPE_INFO(1, iterator, IS_LONG, 0)
89+
ZEND_ARG_TYPE_INFO(0, node, IS_STRING, 0)
90+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, pattern, IS_STRING, 1, "null")
91+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, count, IS_LONG, 0, "0")
92+
ZEND_END_ARG_INFO()
93+
8794
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_RedisArray_select, 0, 1, MAY_BE_BOOL|MAY_BE_ARRAY)
8895
ZEND_ARG_TYPE_INFO(0, index, IS_LONG, 0)
8996
ZEND_END_ARG_INFO()
@@ -126,6 +133,7 @@ ZEND_METHOD(RedisArray, mset);
126133
ZEND_METHOD(RedisArray, multi);
127134
ZEND_METHOD(RedisArray, ping);
128135
ZEND_METHOD(RedisArray, save);
136+
ZEND_METHOD(RedisArray, scan);
129137
ZEND_METHOD(RedisArray, select);
130138
ZEND_METHOD(RedisArray, setOption);
131139
ZEND_METHOD(RedisArray, sscan);
@@ -159,6 +167,7 @@ static const zend_function_entry class_RedisArray_methods[] = {
159167
ZEND_ME(RedisArray, multi, arginfo_class_RedisArray_multi, ZEND_ACC_PUBLIC)
160168
ZEND_ME(RedisArray, ping, arginfo_class_RedisArray_ping, ZEND_ACC_PUBLIC)
161169
ZEND_ME(RedisArray, save, arginfo_class_RedisArray_save, ZEND_ACC_PUBLIC)
170+
ZEND_ME(RedisArray, scan, arginfo_class_RedisArray_scan, ZEND_ACC_PUBLIC)
162171
ZEND_ME(RedisArray, select, arginfo_class_RedisArray_select, ZEND_ACC_PUBLIC)
163172
ZEND_ME(RedisArray, setOption, arginfo_class_RedisArray_setOption, ZEND_ACC_PUBLIC)
164173
ZEND_ME(RedisArray, sscan, arginfo_class_RedisArray_sscan, ZEND_ACC_PUBLIC)

redis_array_legacy_arginfo.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 16a0857d62817f14eef16a00e80e587f318b9052 */
2+
* Stub hash: 52eb7c6a57cea5f116106d24db1c98c7c4469e09 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray___call, 0, 0, 2)
55
ZEND_ARG_INFO(0, function_name)
@@ -81,6 +81,13 @@ ZEND_END_ARG_INFO()
8181

8282
#define arginfo_class_RedisArray_save arginfo_class_RedisArray__continuum
8383

84+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray_scan, 0, 0, 2)
85+
ZEND_ARG_INFO(1, iterator)
86+
ZEND_ARG_INFO(0, node)
87+
ZEND_ARG_INFO(0, pattern)
88+
ZEND_ARG_INFO(0, count)
89+
ZEND_END_ARG_INFO()
90+
8491
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray_select, 0, 0, 1)
8592
ZEND_ARG_INFO(0, index)
8693
ZEND_END_ARG_INFO()
@@ -123,6 +130,7 @@ ZEND_METHOD(RedisArray, mset);
123130
ZEND_METHOD(RedisArray, multi);
124131
ZEND_METHOD(RedisArray, ping);
125132
ZEND_METHOD(RedisArray, save);
133+
ZEND_METHOD(RedisArray, scan);
126134
ZEND_METHOD(RedisArray, select);
127135
ZEND_METHOD(RedisArray, setOption);
128136
ZEND_METHOD(RedisArray, sscan);
@@ -156,6 +164,7 @@ static const zend_function_entry class_RedisArray_methods[] = {
156164
ZEND_ME(RedisArray, multi, arginfo_class_RedisArray_multi, ZEND_ACC_PUBLIC)
157165
ZEND_ME(RedisArray, ping, arginfo_class_RedisArray_ping, ZEND_ACC_PUBLIC)
158166
ZEND_ME(RedisArray, save, arginfo_class_RedisArray_save, ZEND_ACC_PUBLIC)
167+
ZEND_ME(RedisArray, scan, arginfo_class_RedisArray_scan, ZEND_ACC_PUBLIC)
159168
ZEND_ME(RedisArray, select, arginfo_class_RedisArray_select, ZEND_ACC_PUBLIC)
160169
ZEND_ME(RedisArray, setOption, arginfo_class_RedisArray_setOption, ZEND_ACC_PUBLIC)
161170
ZEND_ME(RedisArray, sscan, arginfo_class_RedisArray_sscan, ZEND_ACC_PUBLIC)

0 commit comments

Comments
 (0)