diff options
Diffstat (limited to 'library.h')
-rw-r--r-- | library.h | 63 |
1 files changed, 61 insertions, 2 deletions
@@ -20,19 +20,34 @@ #define CLUSTER_THROW_EXCEPTION(msg, code) \ zend_throw_exception(redis_cluster_exception_ce, (msg), code) +#define redis_sock_write_sstr(redis_sock, sstr) \ + redis_sock_write(redis_sock, (sstr)->c, (sstr)->len) + +#if PHP_VERSION_ID < 80000 + #define redis_hash_fetch_ops(zstr) php_hash_fetch_ops(ZSTR_VAL((zstr)), ZSTR_LEN((zstr))) +#else + #define redis_hash_fetch_ops(zstr) php_hash_fetch_ops(zstr) +#endif + +void redis_register_persistent_resource(zend_string *id, void *ptr, int le_id); + +PHP_REDIS_API int redis_extract_auth_info(zval *ztest, zend_string **user, zend_string **pass); + int redis_cmd_init_sstr(smart_string *str, int num_args, char *keyword, int keyword_len); int redis_cmd_append_sstr(smart_string *str, char *append, int append_len); 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_sstr_i64(smart_string *str, int64_t append); int redis_cmd_append_sstr_dbl(smart_string *str, double value); +int redis_cmd_append_sstr_zstr(smart_string *str, zend_string *zstr); int redis_cmd_append_sstr_zval(smart_string *str, zval *z, RedisSock *redis_sock); int redis_cmd_append_sstr_key(smart_string *str, char *key, size_t len, RedisSock *redis_sock, short *slot); int redis_cmd_append_sstr_arrkey(smart_string *cmd, zend_string *kstr, zend_ulong idx); PHP_REDIS_API int redis_spprintf(RedisSock *redis_sock, short *slot, char **ret, char *kw, char *fmt, ...); +PHP_REDIS_API zend_string *redis_pool_spprintf(RedisSock *redis_sock, char *fmt, ...); -PHP_REDIS_API char * redis_sock_read(RedisSock *redis_sock, int *buf_len); +PHP_REDIS_API char *redis_sock_read(RedisSock *redis_sock, int *buf_len); PHP_REDIS_API int redis_sock_gets(RedisSock *redis_sock, char *buf, int buf_size, size_t* line_len); PHP_REDIS_API void redis_1_response(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab, void *ctx); PHP_REDIS_API void redis_long_response(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval* z_tab, void *ctx); @@ -52,13 +67,17 @@ PHP_REDIS_API RedisSock* redis_sock_create(char *host, int host_len, int port, d PHP_REDIS_API int redis_sock_connect(RedisSock *redis_sock); PHP_REDIS_API int redis_sock_server_open(RedisSock *redis_sock); PHP_REDIS_API int redis_sock_auth(RedisSock *redis_sock); +PHP_REDIS_API char *redis_sock_auth_cmd(RedisSock *redis_sock, int *cmdlen); +PHP_REDIS_API void redis_sock_set_auth(RedisSock *redis_sock, zend_string *user, zend_string *pass); +PHP_REDIS_API void redis_sock_set_auth_zval(RedisSock *redis_sock, zval *zv); +PHP_REDIS_API void redis_sock_copy_auth(RedisSock *dst, RedisSock *src); +PHP_REDIS_API void redis_sock_free_auth(RedisSock *redis_sock); PHP_REDIS_API int redis_sock_disconnect(RedisSock *redis_sock, int force); PHP_REDIS_API zval *redis_sock_read_multibulk_reply_zval(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab); PHP_REDIS_API int redis_sock_read_single_line(RedisSock *redis_sock, char *buffer, size_t buflen, size_t *linelen, int set_err); PHP_REDIS_API char *redis_sock_read_bulk_reply(RedisSock *redis_sock, int bytes); PHP_REDIS_API int redis_sock_read_multibulk_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *_z_tab, void *ctx); -//PHP_REDIS_API void redis_mbulk_reply_loop(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab, int count, int unserialize); PHP_REDIS_API void redis_mbulk_reply_loop(RedisSock *redis_sock, zval *z_tab, int count, int unserialize); @@ -113,6 +132,12 @@ redis_read_xclaim_response(RedisSock *redis_sock, int count, zval *rv); PHP_REDIS_API int redis_read_xinfo_response(RedisSock *redis_sock, zval *z_ret, int elements); +/* Specialized ACL reply handlers */ +PHP_REDIS_API int redis_read_acl_getuser_reply(RedisSock *redis_sock, zval *zret, long len); +PHP_REDIS_API int redis_acl_getuser_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab, void *ctx); +PHP_REDIS_API int redis_read_acl_log_reply(RedisSock *redis_sock, zval *zret, long count); +PHP_REDIS_API int redis_acl_log_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab, void *ctx); + /* * Variant Read methods, mostly to implement eval */ @@ -125,4 +150,38 @@ PHP_REDIS_API int redis_read_raw_variant_reply(INTERNAL_FUNCTION_PARAMETERS, Red PHP_REDIS_API int redis_read_variant_reply_strings(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab, void *ctx); PHP_REDIS_API void redis_client_list_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab); +/* Helper methods to get configuration values from a HashTable. */ + +#define REDIS_HASH_STR_FIND_STATIC(ht, sstr) \ + zend_hash_str_find(ht, sstr, sizeof(sstr) - 1) +#define REDIS_HASH_STR_FIND_TYPE_STATIC(ht, sstr, type) \ + redis_hash_str_find_type(ht, sstr, sizeof(sstr) - 1, type) + +#define REDIS_CONF_DOUBLE_STATIC(ht, sstr, dval) \ + redis_conf_double(ht, sstr, sizeof(sstr) - 1, dval) +#define REDIS_CONF_BOOL_STATIC(ht, sstr, rval) \ + redis_conf_bool(ht, sstr, sizeof(sstr) - 1, rval) +#define REDIS_CONF_ZEND_BOOL_STATIC(ht, sstr, bval) \ + redis_conf_zend_bool(ht, sstr, sizeof(sstr) - 1, bval) +#define REDIS_CONF_LONG_STATIC(ht, sstr, lval) \ + redis_conf_long(ht, sstr, sizeof(sstr) - 1, lval) +#define REDIS_CONF_INT_STATIC(ht, sstr, ival) \ + redis_conf_int(ht, sstr, sizeof(sstr) - 1, ival) +#define REDIS_CONF_STRING_STATIC(ht, sstr, sval) \ + redis_conf_string(ht, sstr, sizeof(sstr) - 1, sval) +#define REDIS_CONF_ZVAL_STATIC(ht, sstr, zret, copy, dtor) \ + redis_conf_zval(ht, sstr, sizeof(sstr) - 1, zret, copy, dtor) +#define REDIS_CONF_AUTH_STATIC(ht, sstr, user, pass) \ + redis_conf_auth(ht, sstr, sizeof(sstr) - 1, user, pass) + +zval *redis_hash_str_find_type(HashTable *ht, const char *key, int keylen, int type); +void redis_conf_double(HashTable *ht, const char *key, int keylen, double *dval); +void redis_conf_bool(HashTable *ht, const char *key, int keylen, int *bval); +void redis_conf_zend_bool(HashTable *ht, const char *key, int keylen, zend_bool *bval); +void redis_conf_long(HashTable *ht, const char *key, int keylen, zend_long *lval); +void redis_conf_int(HashTable *ht, const char *key, int keylen, int *ival); +void redis_conf_string(HashTable *ht, const char *key, size_t keylen, zend_string **sval); +void redis_conf_zval(HashTable *ht, const char *key, size_t keylen, zval *zret, int copy, int dtor); +void redis_conf_auth(HashTable *ht, const char *key, size_t keylen, zend_string **user, zend_string **pass); + #endif |