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:
authormichael-grunder <michael.grunder@gmail.com>2017-04-27 02:55:20 +0300
committermichael-grunder <michael.grunder@gmail.com>2017-04-27 02:55:20 +0300
commita4a0ed5f8a8fd55e0970c140eb1e7c8133144fc7 (patch)
tree4a4e0ea29201aa555ccf1d1e283c2a5418c01a93 /library.h
parent9ec9aedea803ebc7b55fca026f3be69471d0e964 (diff)
Initial commit of refactored command construction
This commit adds a new printf like command construction function with additionaly format specifiers specific to phpredis. Because phpredis can be configured to automatically prefix keys and/or automatically serialize values we had a great deal of redundant boilerplate code. zend_parse_paramaters(..., "sz", &key, &keylen, &z_arg); keyfree = redis_key_prefix(redis_sock, &key, &keylen); valfree = redis_serialize(redis_sock, z_val, &realval, &reallen); /* More processing */ if (keyfree) efree(key); if (valfree) efree(val); Now it is possible to use redis_spprintf and use format specifiers specific to these tasks, which will handle prefixing or serialization (as well as memory cleanup) automatically: /* The library function will automatically prefix and serialize values if phpredis has been configured to do that */ len = phpredis_spprintf(redis_sock, slot TRMLS_CC, "SET", "kv", key, key_len, z_value);
Diffstat (limited to 'library.h')
-rw-r--r--library.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/library.h b/library.h
index 872a8b80..f4a4cbc7 100644
--- a/library.h
+++ b/library.h
@@ -1,6 +1,9 @@
#ifndef REDIS_LIBRARY_H
#define REDIS_LIBRARY_H
+#define REDIS_SPPRINTF(ret, kw, fmt, ...) \
+ redis_spprintf(redis_sock, slot TSRMLS_CC, ret, kw, fmt, __VA_ARGS__)
+
#define REDIS_CMD_APPEND_SSTR_STATIC(sstr, str) \
redis_cmd_append_sstr(sstr, str, sizeof(str)-1);
@@ -21,6 +24,10 @@ int redis_cmd_append_sstr_int(smart_string *str, int append);
int redis_cmd_append_sstr_long(smart_string *str, long append);
int redis_cmd_append_int(char **cmd, int cmd_len, int append);
int redis_cmd_append_sstr_dbl(smart_string *str, double value);
+int redis_cmd_append_sstr_zval(smart_string *str, zval *z, RedisSock *redis_sock TSRMLS_DC);
+int redis_cmd_append_sstr_key(smart_string *str, char *key, strlen_t len, RedisSock *redis_sock, short *slot);
+
+PHP_REDIS_API int redis_spprintf(RedisSock *redis_sock, short *slot TSRMLS_DC, char **ret, char *kw, char *fmt, ...);
PHP_REDIS_API char * redis_sock_read(RedisSock *redis_sock, int *buf_len TSRMLS_DC);
PHP_REDIS_API int redis_sock_gets(RedisSock *redis_sock, char *buf, int buf_size, size_t* line_len TSRMLS_DC);