From 4cb4cd0ee26fdd1a07f468b976f990dbb9de7ed0 Mon Sep 17 00:00:00 2001 From: michael-grunder Date: Sun, 18 Apr 2021 15:27:59 -0700 Subject: Separate compression and create utility methods This commit splits compression and serialization into two distinct parts and adds some utility functions so the user can compress/uncompress or pack/unpack data explicily. See #1939 --- redis.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'redis.c') diff --git a/redis.c b/redis.c index 230859db..bbf5bd89 100644 --- a/redis.c +++ b/redis.c @@ -286,6 +286,10 @@ static zend_function_entry redis_functions[] = { PHP_ME(Redis, _prefix, arginfo_key, ZEND_ACC_PUBLIC) PHP_ME(Redis, _serialize, arginfo_value, ZEND_ACC_PUBLIC) PHP_ME(Redis, _unserialize, arginfo_value, ZEND_ACC_PUBLIC) + PHP_ME(Redis, _pack, arginfo_value, ZEND_ACC_PUBLIC) + PHP_ME(Redis, _unpack, arginfo_value, ZEND_ACC_PUBLIC) + PHP_ME(Redis, _compress, arginfo_value, ZEND_ACC_PUBLIC) + PHP_ME(Redis, _uncompress, arginfo_value, ZEND_ACC_PUBLIC) PHP_ME(Redis, acl, arginfo_acl, ZEND_ACC_PUBLIC) PHP_ME(Redis, append, arginfo_key_value, ZEND_ACC_PUBLIC) PHP_ME(Redis, auth, arginfo_auth, ZEND_ACC_PUBLIC) @@ -3294,6 +3298,51 @@ PHP_METHOD(Redis, _unserialize) { redis_exception_ce); } +PHP_METHOD(Redis, _compress) { + RedisSock *redis_sock; + + // Grab socket + if ((redis_sock = redis_sock_get_instance(getThis(), 0)) == NULL) { + RETURN_FALSE; + } + + redis_compress_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock); +} + +PHP_METHOD(Redis, _uncompress) { + RedisSock *redis_sock; + + // Grab socket + if ((redis_sock = redis_sock_get_instance(getThis(), 0)) == NULL) { + RETURN_FALSE; + } + + redis_uncompress_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, + redis_exception_ce); +} + +PHP_METHOD(Redis, _pack) { + RedisSock *redis_sock; + + // Grab socket + if ((redis_sock = redis_sock_get_instance(getThis(), 0)) == NULL) { + RETURN_FALSE; + } + + redis_pack_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock); +} + +PHP_METHOD(Redis, _unpack) { + RedisSock *redis_sock; + + // Grab socket + if ((redis_sock = redis_sock_get_instance(getThis(), 0)) == NULL) { + RETURN_FALSE; + } + + redis_unpack_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock); +} + /* {{{ proto Redis::getLastError() */ PHP_METHOD(Redis, getLastError) { zval *object; -- cgit v1.2.3