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>2019-06-12 13:50:50 +0300
committerPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2019-06-12 13:50:50 +0300
commitac9dca0a925de9cd87268c1e4629893cc436e50c (patch)
tree1694310f98a5d10b680b369abb601ff0fba3b65b
parent4852a5106a10d52dee8b570a9736aa37cf606661 (diff)
Fix xInfo ro RedisCluster
-rw-r--r--cluster_library.c18
-rw-r--r--cluster_library.h2
-rw-r--r--library.c2
-rw-r--r--library.h2
-rw-r--r--redis_cluster.c2
5 files changed, 24 insertions, 2 deletions
diff --git a/cluster_library.c b/cluster_library.c
index dd1e0bbc..2e926963 100644
--- a/cluster_library.c
+++ b/cluster_library.c
@@ -2314,6 +2314,24 @@ cluster_xclaim_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster *c, void *ctx) {
}
+/* XINFO */
+PHP_REDIS_API void
+cluster_xinfo_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster *c, void *ctx)
+{
+ zval z_ret;
+
+ array_init(&z_ret);
+ if (redis_read_xinfo_response(c->cmd_sock, &z_ret, c->reply_len) != SUCCESS) {
+ zval_dtor(&z_ret);
+ CLUSTER_RETURN_FALSE(c);
+ }
+
+ if (CLUSTER_IS_ATOMIC(c)) {
+ RETURN_ZVAL(&z_ret, 0, 1);
+ }
+ add_next_index_zval(&c->multi_resp, &z_ret);
+}
+
/* MULTI BULK response loop where we might pull the next one */
PHP_REDIS_API zval *cluster_zval_mbulk_resp(INTERNAL_FUNCTION_PARAMETERS,
redisCluster *c, int pull, mbulk_cb cb, zval *z_ret)
diff --git a/cluster_library.h b/cluster_library.h
index 3b3b4a7d..df83d967 100644
--- a/cluster_library.h
+++ b/cluster_library.h
@@ -487,6 +487,8 @@ PHP_REDIS_API void cluster_xrange_resp(INTERNAL_FUNCTION_PARAMETERS,
redisCluster *c, void *ctx);
PHP_REDIS_API void cluster_xclaim_resp(INTERNAL_FUNCTION_PARAMETERS,
redisCluster *c, void *ctx);
+PHP_REDIS_API void cluster_xinfo_resp(INTERNAL_FUNCTION_PARAMETERS,
+ redisCluster *c, void *ctx);
/* MULTI BULK processing callbacks */
int mbulk_resp_loop(RedisSock *redis_sock, zval *z_result,
diff --git a/library.c b/library.c
index f312735c..8d44fb6a 100644
--- a/library.c
+++ b/library.c
@@ -1451,7 +1451,7 @@ failure:
return -1;
}
-static int
+PHP_REDIS_API int
redis_read_xinfo_response(RedisSock *redis_sock, zval *z_ret, int elements)
{
zval zv;
diff --git a/library.h b/library.h
index 4f363991..c60e4a69 100644
--- a/library.h
+++ b/library.h
@@ -109,6 +109,8 @@ PHP_REDIS_API int
redis_read_stream_messages_multi(RedisSock *redis_sock, int count, zval *z_ret TSRMLS_DC);
PHP_REDIS_API int
redis_read_xclaim_response(RedisSock *redis_sock, int count, zval *rv TSRMLS_DC);
+PHP_REDIS_API int
+redis_read_xinfo_response(RedisSock *redis_sock, zval *z_ret, int elements TSRMLS_DC);
/*
* Variant Read methods, mostly to implement eval
diff --git a/redis_cluster.c b/redis_cluster.c
index 0342096c..591138f6 100644
--- a/redis_cluster.c
+++ b/redis_cluster.c
@@ -3095,7 +3095,7 @@ PHP_METHOD(RedisCluster, xgroup) {
/* {{{ proto variant RedisCluster::xinfo(string op, [string arg1, string arg2]); */
PHP_METHOD(RedisCluster, xinfo) {
- CLUSTER_PROCESS_CMD(xinfo, cluster_variant_resp, 0);
+ CLUSTER_PROCESS_CMD(xinfo, cluster_xinfo_resp, 0);
}
/* {{{ proto string RedisCluster::xlen(string key) }}} */