diff options
author | michael-grunder <michael.grunder@gmail.com> | 2017-04-27 02:55:20 +0300 |
---|---|---|
committer | michael-grunder <michael.grunder@gmail.com> | 2017-04-27 02:55:20 +0300 |
commit | a4a0ed5f8a8fd55e0970c140eb1e7c8133144fc7 (patch) | |
tree | 4a4e0ea29201aa555ccf1d1e283c2a5418c01a93 /library.h | |
parent | 9ec9aedea803ebc7b55fca026f3be69471d0e964 (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.h | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -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); |