Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2018-12-21 16:11:48 +0300
committerPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2018-12-22 16:31:51 +0300
commit71922bf1dd30af17cf2939b1c5e9b33f7fe2a5c4 (patch)
tree26da87fb6386720da3521f3c179a20459983c448 /redis_array.c
parentbb32e6f3a0e93b1de9235de2db496fb1bfc400d0 (diff)
Add RedisArray::_continuum method
Diffstat (limited to 'redis_array.c')
-rw-r--r--redis_array.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/redis_array.c b/redis_array.c
index df661a9f..e4c62b48 100644
--- a/redis_array.c
+++ b/redis_array.c
@@ -104,6 +104,7 @@ ZEND_END_ARG_INFO()
zend_function_entry redis_array_functions[] = {
PHP_ME(RedisArray, __call, arginfo_call, ZEND_ACC_PUBLIC)
PHP_ME(RedisArray, __construct, arginfo_ctor, ZEND_ACC_PUBLIC)
+ PHP_ME(RedisArray, _continuum, arginfo_void, ZEND_ACC_PUBLIC)
PHP_ME(RedisArray, _distributor, arginfo_void, ZEND_ACC_PUBLIC)
PHP_ME(RedisArray, _function, arginfo_void, ZEND_ACC_PUBLIC)
PHP_ME(RedisArray, _hosts, arginfo_void, ZEND_ACC_PUBLIC)
@@ -639,6 +640,38 @@ PHP_METHOD(RedisArray, _rehash)
}
}
+PHP_METHOD(RedisArray, _continuum)
+{
+ int i;
+ zval *object;
+ RedisArray *ra;
+
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O",
+ &object, redis_array_ce) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ if ((ra = redis_array_get(object TSRMLS_CC)) == NULL) {
+ RETURN_FALSE;
+ }
+
+ array_init(return_value);
+ if (ra->continuum) {
+ for (i = 0; i < ra->continuum->nb_points; ++i) {
+ zval zv, *z_tmp = &zv;
+#if (PHP_MAJOR_VERSION < 7)
+ MAKE_STD_ZVAL(z_tmp);
+#endif
+
+ array_init(z_tmp);
+ add_assoc_long(z_tmp, "index", ra->continuum->points[i].index);
+ add_assoc_long(z_tmp, "value", ra->continuum->points[i].value);
+ add_next_index_zval(return_value, z_tmp);
+ }
+ }
+}
+
+
static void
multihost_distribute_call(RedisArray *ra, zval *return_value, zval *z_fun, int argc, zval *argv TSRMLS_DC)
{