From 2a6dee5d4dc5500e1260bcea0f620b6adb0fe22f Mon Sep 17 00:00:00 2001 From: michael-grunder Date: Tue, 22 Nov 2022 15:03:51 -0800 Subject: [PATCH] Use PHP's new class constant mechanism. Let gen_stub.php define the constants for us, including deriving their actual values from C defines. As a side-effect we have to drop support for PHP < 7.2 as it does not have interned strings. --- .github/workflows/ci.yml | 4 +- redis.c | 102 -------- redis.stub.php | 415 +++++++++++++++++++++++++++++++++ redis_arginfo.h | 330 +++++++++++++++++++++++++- redis_cluster.stub.php | 39 ++++ redis_cluster_arginfo.h | 32 ++- redis_cluster_legacy_arginfo.h | 32 ++- redis_legacy_arginfo.h | 330 +++++++++++++++++++++++++- 8 files changed, 1176 insertions(+), 108 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 895f629..907637d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ jobs: strategy: fail-fast: false matrix: - php: ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1'] + php: ['7.2', '7.3', '7.4', '8.0', '8.1'] experimental: [false] include: - php: '8.2' @@ -85,7 +85,7 @@ jobs: strategy: fail-fast: false matrix: - php: ['7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1'] + php: ['7.2', '7.3', '7.4', '8.0', '8.1'] experimental: [false] include: - php: '8.2' diff --git a/redis.c b/redis.c index d90a068..2509d10 100644 --- a/redis.c +++ b/redis.c @@ -290,104 +290,6 @@ PHP_REDIS_API RedisSock *redis_sock_get_connected(INTERNAL_FUNCTION_PARAMETERS) return redis_sock; } -/* Redis and RedisCluster objects share serialization/prefixing settings so - * this is a generic function to add class constants to either */ -static void add_class_constants(zend_class_entry *ce, int is_cluster) { - zend_declare_class_constant_long(ce, ZEND_STRL("REDIS_NOT_FOUND"), REDIS_NOT_FOUND); - zend_declare_class_constant_long(ce, ZEND_STRL("REDIS_STRING"), REDIS_STRING); - zend_declare_class_constant_long(ce, ZEND_STRL("REDIS_SET"), REDIS_SET); - zend_declare_class_constant_long(ce, ZEND_STRL("REDIS_LIST"), REDIS_LIST); - zend_declare_class_constant_long(ce, ZEND_STRL("REDIS_ZSET"), REDIS_ZSET); - zend_declare_class_constant_long(ce, ZEND_STRL("REDIS_HASH"), REDIS_HASH); - zend_declare_class_constant_long(ce, ZEND_STRL("REDIS_STREAM"), REDIS_STREAM); - - /* Add common mode constants */ - zend_declare_class_constant_long(ce, ZEND_STRL("ATOMIC"), ATOMIC); - zend_declare_class_constant_long(ce, ZEND_STRL("MULTI"), MULTI); - - /* options */ - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_SERIALIZER"), REDIS_OPT_SERIALIZER); - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_PREFIX"), REDIS_OPT_PREFIX); - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_READ_TIMEOUT"), REDIS_OPT_READ_TIMEOUT); - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_TCP_KEEPALIVE"), REDIS_OPT_TCP_KEEPALIVE); - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_COMPRESSION"), REDIS_OPT_COMPRESSION); - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_REPLY_LITERAL"), REDIS_OPT_REPLY_LITERAL); - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_COMPRESSION_LEVEL"), REDIS_OPT_COMPRESSION_LEVEL); - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_NULL_MULTIBULK_AS_NULL"), REDIS_OPT_NULL_MBULK_AS_NULL); - - /* serializer */ - zend_declare_class_constant_long(ce, ZEND_STRL("SERIALIZER_NONE"), REDIS_SERIALIZER_NONE); - zend_declare_class_constant_long(ce, ZEND_STRL("SERIALIZER_PHP"), REDIS_SERIALIZER_PHP); -#ifdef HAVE_REDIS_IGBINARY - zend_declare_class_constant_long(ce, ZEND_STRL("SERIALIZER_IGBINARY"), REDIS_SERIALIZER_IGBINARY); -#endif -#ifdef HAVE_REDIS_MSGPACK - zend_declare_class_constant_long(ce, ZEND_STRL("SERIALIZER_MSGPACK"), REDIS_SERIALIZER_MSGPACK); -#endif - zend_declare_class_constant_long(ce, ZEND_STRL("SERIALIZER_JSON"), REDIS_SERIALIZER_JSON); - - /* compression */ - zend_declare_class_constant_long(ce, ZEND_STRL("COMPRESSION_NONE"), REDIS_COMPRESSION_NONE); -#ifdef HAVE_REDIS_LZF - zend_declare_class_constant_long(ce, ZEND_STRL("COMPRESSION_LZF"), REDIS_COMPRESSION_LZF); -#endif -#ifdef HAVE_REDIS_ZSTD - zend_declare_class_constant_long(ce, ZEND_STRL("COMPRESSION_ZSTD"), REDIS_COMPRESSION_ZSTD); - zend_declare_class_constant_long(ce, ZEND_STRL("COMPRESSION_ZSTD_MIN"), 1); -#ifdef ZSTD_CLEVEL_DEFAULT - zend_declare_class_constant_long(ce, ZEND_STRL("COMPRESSION_ZSTD_DEFAULT"), ZSTD_CLEVEL_DEFAULT); -#else - zend_declare_class_constant_long(ce, ZEND_STRL("COMPRESSION_ZSTD_DEFAULT"), 3); -#endif - zend_declare_class_constant_long(ce, ZEND_STRL("COMPRESSION_ZSTD_MAX"), ZSTD_maxCLevel()); -#endif - -#ifdef HAVE_REDIS_LZ4 - zend_declare_class_constant_long(ce, ZEND_STRL("COMPRESSION_LZ4"), REDIS_COMPRESSION_LZ4); -#endif - - /* scan options*/ - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_SCAN"), REDIS_OPT_SCAN); - zend_declare_class_constant_long(ce, ZEND_STRL("SCAN_RETRY"), REDIS_SCAN_RETRY); - zend_declare_class_constant_long(ce, ZEND_STRL("SCAN_NORETRY"), REDIS_SCAN_NORETRY); - zend_declare_class_constant_long(ce, ZEND_STRL("SCAN_PREFIX"), REDIS_SCAN_PREFIX); - zend_declare_class_constant_long(ce, ZEND_STRL("SCAN_NOPREFIX"), REDIS_SCAN_NOPREFIX); - - zend_declare_class_constant_stringl(ce, "AFTER", 5, "after", 5); - zend_declare_class_constant_stringl(ce, "BEFORE", 6, "before", 6); - - if (is_cluster) { - /* Cluster option to allow for slave failover */ - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_SLAVE_FAILOVER"), REDIS_OPT_FAILOVER); - zend_declare_class_constant_long(ce, ZEND_STRL("FAILOVER_NONE"), REDIS_FAILOVER_NONE); - zend_declare_class_constant_long(ce, ZEND_STRL("FAILOVER_ERROR"), REDIS_FAILOVER_ERROR); - zend_declare_class_constant_long(ce, ZEND_STRL("FAILOVER_DISTRIBUTE"), REDIS_FAILOVER_DISTRIBUTE); - zend_declare_class_constant_long(ce, ZEND_STRL("FAILOVER_DISTRIBUTE_SLAVES"), REDIS_FAILOVER_DISTRIBUTE_SLAVES); - } else { - /* Cluster doesn't support pipelining at this time */ - zend_declare_class_constant_long(ce, ZEND_STRL("PIPELINE"), PIPELINE); - - zend_declare_class_constant_stringl(ce, ZEND_STRL("LEFT"), ZEND_STRL("left")); - zend_declare_class_constant_stringl(ce, ZEND_STRL("RIGHT"), ZEND_STRL("right")); - } - - /* retry/backoff options*/ - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_MAX_RETRIES"), REDIS_OPT_MAX_RETRIES); - - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_BACKOFF_ALGORITHM"), REDIS_OPT_BACKOFF_ALGORITHM); - zend_declare_class_constant_long(ce, ZEND_STRL("BACKOFF_ALGORITHM_DEFAULT"), REDIS_BACKOFF_ALGORITHM_DEFAULT); - zend_declare_class_constant_long(ce, ZEND_STRL("BACKOFF_ALGORITHM_CONSTANT"), REDIS_BACKOFF_ALGORITHM_CONSTANT); - zend_declare_class_constant_long(ce, ZEND_STRL("BACKOFF_ALGORITHM_UNIFORM"), REDIS_BACKOFF_ALGORITHM_UNIFORM); - zend_declare_class_constant_long(ce, ZEND_STRL("BACKOFF_ALGORITHM_EXPONENTIAL"), REDIS_BACKOFF_ALGORITHM_EXPONENTIAL); - zend_declare_class_constant_long(ce, ZEND_STRL("BACKOFF_ALGORITHM_FULL_JITTER"), REDIS_BACKOFF_ALGORITHM_FULL_JITTER); - zend_declare_class_constant_long(ce, ZEND_STRL("BACKOFF_ALGORITHM_EQUAL_JITTER"), REDIS_BACKOFF_ALGORITHM_EQUAL_JITTER); - zend_declare_class_constant_long(ce, ZEND_STRL("BACKOFF_ALGORITHM_DECORRELATED_JITTER"), REDIS_BACKOFF_ALGORITHM_DECORRELATED_JITTER); - - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_BACKOFF_BASE"), REDIS_OPT_BACKOFF_BASE); - - zend_declare_class_constant_long(ce, ZEND_STRL("OPT_BACKOFF_CAP"), REDIS_OPT_BACKOFF_CAP); -} - static ZEND_RSRC_DTOR_FUNC(redis_connections_pool_dtor) { if (res->ptr) { @@ -462,10 +364,6 @@ PHP_MINIT_FUNCTION(redis) /* RedisException class */ redis_exception_ce = register_class_RedisException(spl_ce_RuntimeException); - /* Add shared class constants to Redis and RedisCluster objects */ - add_class_constants(redis_ce, 0); - add_class_constants(redis_cluster_ce, 1); - #ifdef PHP_SESSION php_session_register_module(&ps_mod_redis); php_session_register_module(&ps_mod_redis_cluster); diff --git a/redis.stub.php b/redis.stub.php index 35df9ec..6e5347d 100644 --- a/redis.stub.php +++ b/redis.stub.php @@ -7,6 +7,421 @@ */ class Redis { + /** + * + * @var int + * @cvalue REDIS_NOT_FOUND + * + */ + public const REDIS_NOT_FOUND = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_STRING + * + */ + public const REDIS_STRING = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_SET + * + */ + public const REDIS_SET = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_LIST + * + */ + public const REDIS_LIST = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_ZSET + * + */ + public const REDIS_ZSET = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_HASH + * + */ + public const REDIS_HASH = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_STREAM + * + */ + public const REDIS_STREAM = UNKNOWN; + + /** + * + * @var int + * @cvalue ATOMIC + * + */ + public const ATOMIC = UNKNOWN; + + /** + * + * @var int + * @cvalue MULTI + * + */ + public const MULTI = UNKNOWN; + + /** + * + * @var int + * @cvalue PIPELINE + * + */ + public const PIPELINE = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_SERIALIZER + * + */ + public const OPT_SERIALIZER = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_PREFIX + * + */ + public const OPT_PREFIX = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_READ_TIMEOUT + * + */ + public const OPT_READ_TIMEOUT = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_TCP_KEEPALIVE + * + */ + public const OPT_TCP_KEEPALIVE = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_COMPRESSION + * + */ + public const OPT_COMPRESSION = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_REPLY_LITERAL + * + */ + public const OPT_REPLY_LITERAL = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_COMPRESSION_LEVEL + * + */ + public const OPT_COMPRESSION_LEVEL = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_NULL_MBULK_AS_NULL + * + */ + public const OPT_NULL_MULTIBULK_AS_NULL = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_SERIALIZER_NONE + * + */ + public const SERIALIZER_NONE = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_SERIALIZER_PHP + * + */ + public const SERIALIZER_PHP = UNKNOWN; + +#ifdef HAVE_REDIS_IGBINARY + /** + * + * @var int + * @cvalue REDIS_SERIALIZER_IGBINARY + * + */ + public const SERIALIZER_IGBINARY = UNKNOWN; +#endif + +#ifdef HAVE_REDIS_MSGPACK + /** + * + * @var int + * @cvalue REDIS_SERIALIZER_MSGPACK + * + */ + public const SERIALIZER_MSGPACK = UNKNOWN; +#endif + + /** + * + * @var int + * @cvalue REDIS_SERIALIZER_JSON + * + */ + public const SERIALIZER_JSON = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_COMPRESSION_NONE + * + */ + public const COMPRESSION_NONE = UNKNOWN; + +#ifdef HAVE_REDIS_LZF + /** + * + * @var int + * @cvalue REDIS_COMPRESSION_LZF + * + */ + public const COMPRESSION_LZF = UNKNOWN; +#endif + +#ifdef HAVE_REDIS_ZSTD + /** + * + * @var int + * @cvalue REDIS_COMPRESSION_ZSTD + * + */ + public const COMPRESSION_ZSTD = UNKNOWN; + +#ifdef ZSTD_CLEVEL_DEFAULT + /** + * + * @var int + * @cvalue ZSTD_CLEVEL_DEFAULT + * + */ + public const COMPRESSION_ZSTD_DEFAULT = UNKNOWN; +#else + /** + * + * @var int + * + */ + public const COMPRESSION_ZSTD_DEFAULT = 3; +#endif + +#ifdef ZSTD_CLEVEL_MAX + /** + * + * @var int + * @cvalue ZSTD_CLEVEL_MAX + * + */ + public const COMPRESSION_ZSTD_MAX = UNKNOWN; +#endif + + /** + * @var int + * @cvalue ZSTD_maxCLevel() + */ + public const COMPRESSION_ZSTD_MAX = UNKNOWN; + +#endif + +#ifdef HAVE_REDIS_LZ4 + /** + * + * @var int + * @cvalue REDIS_COMPRESSION_LZ4 + * + */ + public const COMPRESSION_LZ4 = UNKNOWN; +#endif + + /** + * + * @var int + * @cvalue REDIS_OPT_SCAN + * + */ + public const OPT_SCAN = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_SCAN_RETRY + * + */ + public const SCAN_RETRY = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_SCAN_NORETRY + * + */ + public const SCAN_NORETRY = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_SCAN_PREFIX + * + */ + public const SCAN_PREFIX = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_SCAN_NOPREFIX + * + */ + public const SCAN_NOPREFIX = UNKNOWN; + + /** + * + * @var string + * + */ + public const BEFORE = "before"; + + /** + * + * @var string + * + */ + public const AFTER = "after"; + + /** + * + * @var string + * + */ + public const LEFT = "left"; + + /** + * + * @var string + * + */ + public const RIGHT = "right"; + + /** + * + * @var int + * @cvalue REDIS_OPT_MAX_RETRIES + * + */ + public const OPT_MAX_RETRIES = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_BACKOFF_ALGORITHM + * + */ + public const OPT_BACKOFF_ALGORITHM = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_BACKOFF_ALGORITHM_DEFAULT + * + */ + public const BACKOFF_ALGORITHM_DEFAULT = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_BACKOFF_ALGORITHM_CONSTANT + * + */ + public const BACKOFF_ALGORITHM_CONSTANT = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_BACKOFF_ALGORITHM_UNIFORM + * + */ + public const BACKOFF_ALGORITHM_UNIFORM = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_BACKOFF_ALGORITHM_EXPONENTIAL + * + */ + public const BACKOFF_ALGORITHM_EXPONENTIAL = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_BACKOFF_ALGORITHM_FULL_JITTER + * + */ + public const BACKOFF_ALGORITHM_FULL_JITTER = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_BACKOFF_ALGORITHM_EQUAL_JITTER + * + */ + public const BACKOFF_ALGORITHM_EQUAL_JITTER = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_BACKOFF_ALGORITHM_DECORRELATED_JITTER + * + */ + public const BACKOFF_ALGORITHM_DECORRELATED_JITTER = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_BACKOFF_BASE + * + */ + public const OPT_BACKOFF_BASE = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_OPT_BACKOFF_CAP + * + */ + public const OPT_BACKOFF_CAP = UNKNOWN; /** * Create a new Redis instance. If passed sufficient information in the diff --git a/redis_arginfo.h b/redis_arginfo.h index f0d01cd..3a3727c 100644 --- a/redis_arginfo.h +++ b/redis_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: b18973c6cdb4ae3a706dfd1ad5645339f0fcdd84 */ + * Stub hash: 27f05179a82a7b33198a3a707134d9da5597ab1c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis___construct, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "null") @@ -1643,6 +1643,334 @@ static zend_class_entry *register_class_Redis(void) INIT_CLASS_ENTRY(ce, "Redis", class_Redis_methods); class_entry = zend_register_internal_class_ex(&ce, NULL); + + zval const_REDIS_NOT_FOUND_value; + ZVAL_LONG(&const_REDIS_NOT_FOUND_value, REDIS_NOT_FOUND); + zend_string *const_REDIS_NOT_FOUND_name = zend_string_init_interned("REDIS_NOT_FOUND", sizeof("REDIS_NOT_FOUND") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_NOT_FOUND_name, &const_REDIS_NOT_FOUND_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_NOT_FOUND_name); + + zval const_REDIS_STRING_value; + ZVAL_LONG(&const_REDIS_STRING_value, REDIS_STRING); + zend_string *const_REDIS_STRING_name = zend_string_init_interned("REDIS_STRING", sizeof("REDIS_STRING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_STRING_name, &const_REDIS_STRING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_STRING_name); + + zval const_REDIS_SET_value; + ZVAL_LONG(&const_REDIS_SET_value, REDIS_SET); + zend_string *const_REDIS_SET_name = zend_string_init_interned("REDIS_SET", sizeof("REDIS_SET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_SET_name, &const_REDIS_SET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_SET_name); + + zval const_REDIS_LIST_value; + ZVAL_LONG(&const_REDIS_LIST_value, REDIS_LIST); + zend_string *const_REDIS_LIST_name = zend_string_init_interned("REDIS_LIST", sizeof("REDIS_LIST") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_LIST_name, &const_REDIS_LIST_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_LIST_name); + + zval const_REDIS_ZSET_value; + ZVAL_LONG(&const_REDIS_ZSET_value, REDIS_ZSET); + zend_string *const_REDIS_ZSET_name = zend_string_init_interned("REDIS_ZSET", sizeof("REDIS_ZSET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_ZSET_name, &const_REDIS_ZSET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_ZSET_name); + + zval const_REDIS_HASH_value; + ZVAL_LONG(&const_REDIS_HASH_value, REDIS_HASH); + zend_string *const_REDIS_HASH_name = zend_string_init_interned("REDIS_HASH", sizeof("REDIS_HASH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_HASH_name, &const_REDIS_HASH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_HASH_name); + + zval const_REDIS_STREAM_value; + ZVAL_LONG(&const_REDIS_STREAM_value, REDIS_STREAM); + zend_string *const_REDIS_STREAM_name = zend_string_init_interned("REDIS_STREAM", sizeof("REDIS_STREAM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_STREAM_name, &const_REDIS_STREAM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_STREAM_name); + + zval const_ATOMIC_value; + ZVAL_LONG(&const_ATOMIC_value, ATOMIC); + zend_string *const_ATOMIC_name = zend_string_init_interned("ATOMIC", sizeof("ATOMIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ATOMIC_name, &const_ATOMIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ATOMIC_name); + + zval const_MULTI_value; + ZVAL_LONG(&const_MULTI_value, MULTI); + zend_string *const_MULTI_name = zend_string_init_interned("MULTI", sizeof("MULTI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MULTI_name, &const_MULTI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MULTI_name); + + zval const_PIPELINE_value; + ZVAL_LONG(&const_PIPELINE_value, PIPELINE); + zend_string *const_PIPELINE_name = zend_string_init_interned("PIPELINE", sizeof("PIPELINE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PIPELINE_name, &const_PIPELINE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PIPELINE_name); + + zval const_OPT_SERIALIZER_value; + ZVAL_LONG(&const_OPT_SERIALIZER_value, REDIS_OPT_SERIALIZER); + zend_string *const_OPT_SERIALIZER_name = zend_string_init_interned("OPT_SERIALIZER", sizeof("OPT_SERIALIZER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_SERIALIZER_name, &const_OPT_SERIALIZER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_SERIALIZER_name); + + zval const_OPT_PREFIX_value; + ZVAL_LONG(&const_OPT_PREFIX_value, REDIS_OPT_PREFIX); + zend_string *const_OPT_PREFIX_name = zend_string_init_interned("OPT_PREFIX", sizeof("OPT_PREFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_PREFIX_name, &const_OPT_PREFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_PREFIX_name); + + zval const_OPT_READ_TIMEOUT_value; + ZVAL_LONG(&const_OPT_READ_TIMEOUT_value, REDIS_OPT_READ_TIMEOUT); + zend_string *const_OPT_READ_TIMEOUT_name = zend_string_init_interned("OPT_READ_TIMEOUT", sizeof("OPT_READ_TIMEOUT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_READ_TIMEOUT_name, &const_OPT_READ_TIMEOUT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_READ_TIMEOUT_name); + + zval const_OPT_TCP_KEEPALIVE_value; + ZVAL_LONG(&const_OPT_TCP_KEEPALIVE_value, REDIS_OPT_TCP_KEEPALIVE); + zend_string *const_OPT_TCP_KEEPALIVE_name = zend_string_init_interned("OPT_TCP_KEEPALIVE", sizeof("OPT_TCP_KEEPALIVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_TCP_KEEPALIVE_name, &const_OPT_TCP_KEEPALIVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_TCP_KEEPALIVE_name); + + zval const_OPT_COMPRESSION_value; + ZVAL_LONG(&const_OPT_COMPRESSION_value, REDIS_OPT_COMPRESSION); + zend_string *const_OPT_COMPRESSION_name = zend_string_init_interned("OPT_COMPRESSION", sizeof("OPT_COMPRESSION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_COMPRESSION_name, &const_OPT_COMPRESSION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_COMPRESSION_name); + + zval const_OPT_REPLY_LITERAL_value; + ZVAL_LONG(&const_OPT_REPLY_LITERAL_value, REDIS_OPT_REPLY_LITERAL); + zend_string *const_OPT_REPLY_LITERAL_name = zend_string_init_interned("OPT_REPLY_LITERAL", sizeof("OPT_REPLY_LITERAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_REPLY_LITERAL_name, &const_OPT_REPLY_LITERAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_REPLY_LITERAL_name); + + zval const_OPT_COMPRESSION_LEVEL_value; + ZVAL_LONG(&const_OPT_COMPRESSION_LEVEL_value, REDIS_OPT_COMPRESSION_LEVEL); + zend_string *const_OPT_COMPRESSION_LEVEL_name = zend_string_init_interned("OPT_COMPRESSION_LEVEL", sizeof("OPT_COMPRESSION_LEVEL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_COMPRESSION_LEVEL_name, &const_OPT_COMPRESSION_LEVEL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_COMPRESSION_LEVEL_name); + + zval const_OPT_NULL_MULTIBULK_AS_NULL_value; + ZVAL_LONG(&const_OPT_NULL_MULTIBULK_AS_NULL_value, REDIS_OPT_NULL_MBULK_AS_NULL); + zend_string *const_OPT_NULL_MULTIBULK_AS_NULL_name = zend_string_init_interned("OPT_NULL_MULTIBULK_AS_NULL", sizeof("OPT_NULL_MULTIBULK_AS_NULL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_NULL_MULTIBULK_AS_NULL_name, &const_OPT_NULL_MULTIBULK_AS_NULL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_NULL_MULTIBULK_AS_NULL_name); + + zval const_SERIALIZER_NONE_value; + ZVAL_LONG(&const_SERIALIZER_NONE_value, REDIS_SERIALIZER_NONE); + zend_string *const_SERIALIZER_NONE_name = zend_string_init_interned("SERIALIZER_NONE", sizeof("SERIALIZER_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SERIALIZER_NONE_name, &const_SERIALIZER_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SERIALIZER_NONE_name); + + zval const_SERIALIZER_PHP_value; + ZVAL_LONG(&const_SERIALIZER_PHP_value, REDIS_SERIALIZER_PHP); + zend_string *const_SERIALIZER_PHP_name = zend_string_init_interned("SERIALIZER_PHP", sizeof("SERIALIZER_PHP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SERIALIZER_PHP_name, &const_SERIALIZER_PHP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SERIALIZER_PHP_name); +#if defined(HAVE_REDIS_IGBINARY) + + zval const_SERIALIZER_IGBINARY_value; + ZVAL_LONG(&const_SERIALIZER_IGBINARY_value, REDIS_SERIALIZER_IGBINARY); + zend_string *const_SERIALIZER_IGBINARY_name = zend_string_init_interned("SERIALIZER_IGBINARY", sizeof("SERIALIZER_IGBINARY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SERIALIZER_IGBINARY_name, &const_SERIALIZER_IGBINARY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SERIALIZER_IGBINARY_name); +#endif +#if defined(HAVE_REDIS_MSGPACK) + + zval const_SERIALIZER_MSGPACK_value; + ZVAL_LONG(&const_SERIALIZER_MSGPACK_value, REDIS_SERIALIZER_MSGPACK); + zend_string *const_SERIALIZER_MSGPACK_name = zend_string_init_interned("SERIALIZER_MSGPACK", sizeof("SERIALIZER_MSGPACK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SERIALIZER_MSGPACK_name, &const_SERIALIZER_MSGPACK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SERIALIZER_MSGPACK_name); +#endif + + zval const_SERIALIZER_JSON_value; + ZVAL_LONG(&const_SERIALIZER_JSON_value, REDIS_SERIALIZER_JSON); + zend_string *const_SERIALIZER_JSON_name = zend_string_init_interned("SERIALIZER_JSON", sizeof("SERIALIZER_JSON") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SERIALIZER_JSON_name, &const_SERIALIZER_JSON_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SERIALIZER_JSON_name); + + zval const_COMPRESSION_NONE_value; + ZVAL_LONG(&const_COMPRESSION_NONE_value, REDIS_COMPRESSION_NONE); + zend_string *const_COMPRESSION_NONE_name = zend_string_init_interned("COMPRESSION_NONE", sizeof("COMPRESSION_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_NONE_name, &const_COMPRESSION_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_NONE_name); +#if defined(HAVE_REDIS_LZF) + + zval const_COMPRESSION_LZF_value; + ZVAL_LONG(&const_COMPRESSION_LZF_value, REDIS_COMPRESSION_LZF); + zend_string *const_COMPRESSION_LZF_name = zend_string_init_interned("COMPRESSION_LZF", sizeof("COMPRESSION_LZF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_LZF_name, &const_COMPRESSION_LZF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_LZF_name); +#endif +#if defined(HAVE_REDIS_ZSTD) + + zval const_COMPRESSION_ZSTD_value; + ZVAL_LONG(&const_COMPRESSION_ZSTD_value, REDIS_COMPRESSION_ZSTD); + zend_string *const_COMPRESSION_ZSTD_name = zend_string_init_interned("COMPRESSION_ZSTD", sizeof("COMPRESSION_ZSTD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_ZSTD_name, &const_COMPRESSION_ZSTD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_ZSTD_name); +#endif +#if defined(HAVE_REDIS_ZSTD) && defined(ZSTD_CLEVEL_DEFAULT) + + zval const_COMPRESSION_ZSTD_DEFAULT_value; + ZVAL_LONG(&const_COMPRESSION_ZSTD_DEFAULT_value, ZSTD_CLEVEL_DEFAULT); + zend_string *const_COMPRESSION_ZSTD_DEFAULT_name = zend_string_init_interned("COMPRESSION_ZSTD_DEFAULT", sizeof("COMPRESSION_ZSTD_DEFAULT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_ZSTD_DEFAULT_name, &const_COMPRESSION_ZSTD_DEFAULT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_ZSTD_DEFAULT_name); +#endif +#if defined(HAVE_REDIS_ZSTD) && !(defined(ZSTD_CLEVEL_DEFAULT)) + + zval const_COMPRESSION_ZSTD_DEFAULT_value; + ZVAL_LONG(&const_COMPRESSION_ZSTD_DEFAULT_value, 3); + zend_string *const_COMPRESSION_ZSTD_DEFAULT_name = zend_string_init_interned("COMPRESSION_ZSTD_DEFAULT", sizeof("COMPRESSION_ZSTD_DEFAULT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_ZSTD_DEFAULT_name, &const_COMPRESSION_ZSTD_DEFAULT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_ZSTD_DEFAULT_name); +#endif +#if defined(HAVE_REDIS_ZSTD) && defined(ZSTD_CLEVEL_MAX) + + zval const_COMPRESSION_ZSTD_MAX_value; + ZVAL_LONG(&const_COMPRESSION_ZSTD_MAX_value, ZSTD_CLEVEL_MAX); + zend_string *const_COMPRESSION_ZSTD_MAX_name = zend_string_init_interned("COMPRESSION_ZSTD_MAX", sizeof("COMPRESSION_ZSTD_MAX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_ZSTD_MAX_name, &const_COMPRESSION_ZSTD_MAX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_ZSTD_MAX_name); +#endif +#if defined(HAVE_REDIS_ZSTD) + + zval const_COMPRESSION_ZSTD_MAX_value; + ZVAL_LONG(&const_COMPRESSION_ZSTD_MAX_value, ZSTD_maxCLevel()); + zend_string *const_COMPRESSION_ZSTD_MAX_name = zend_string_init_interned("COMPRESSION_ZSTD_MAX", sizeof("COMPRESSION_ZSTD_MAX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_ZSTD_MAX_name, &const_COMPRESSION_ZSTD_MAX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_ZSTD_MAX_name); +#endif +#if defined(HAVE_REDIS_LZ4) + + zval const_COMPRESSION_LZ4_value; + ZVAL_LONG(&const_COMPRESSION_LZ4_value, REDIS_COMPRESSION_LZ4); + zend_string *const_COMPRESSION_LZ4_name = zend_string_init_interned("COMPRESSION_LZ4", sizeof("COMPRESSION_LZ4") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_LZ4_name, &const_COMPRESSION_LZ4_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_LZ4_name); +#endif + + zval const_OPT_SCAN_value; + ZVAL_LONG(&const_OPT_SCAN_value, REDIS_OPT_SCAN); + zend_string *const_OPT_SCAN_name = zend_string_init_interned("OPT_SCAN", sizeof("OPT_SCAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_SCAN_name, &const_OPT_SCAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_SCAN_name); + + zval const_SCAN_RETRY_value; + ZVAL_LONG(&const_SCAN_RETRY_value, REDIS_SCAN_RETRY); + zend_string *const_SCAN_RETRY_name = zend_string_init_interned("SCAN_RETRY", sizeof("SCAN_RETRY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SCAN_RETRY_name, &const_SCAN_RETRY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SCAN_RETRY_name); + + zval const_SCAN_NORETRY_value; + ZVAL_LONG(&const_SCAN_NORETRY_value, REDIS_SCAN_NORETRY); + zend_string *const_SCAN_NORETRY_name = zend_string_init_interned("SCAN_NORETRY", sizeof("SCAN_NORETRY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SCAN_NORETRY_name, &const_SCAN_NORETRY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SCAN_NORETRY_name); + + zval const_SCAN_PREFIX_value; + ZVAL_LONG(&const_SCAN_PREFIX_value, REDIS_SCAN_PREFIX); + zend_string *const_SCAN_PREFIX_name = zend_string_init_interned("SCAN_PREFIX", sizeof("SCAN_PREFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SCAN_PREFIX_name, &const_SCAN_PREFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SCAN_PREFIX_name); + + zval const_SCAN_NOPREFIX_value; + ZVAL_LONG(&const_SCAN_NOPREFIX_value, REDIS_SCAN_NOPREFIX); + zend_string *const_SCAN_NOPREFIX_name = zend_string_init_interned("SCAN_NOPREFIX", sizeof("SCAN_NOPREFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SCAN_NOPREFIX_name, &const_SCAN_NOPREFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SCAN_NOPREFIX_name); + + zval const_BEFORE_value; + zend_string *const_BEFORE_value_str = zend_string_init("before", strlen("before"), 1); + ZVAL_STR(&const_BEFORE_value, const_BEFORE_value_str); + zend_string *const_BEFORE_name = zend_string_init_interned("BEFORE", sizeof("BEFORE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BEFORE_name, &const_BEFORE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BEFORE_name); + + zval const_AFTER_value; + zend_string *const_AFTER_value_str = zend_string_init("after", strlen("after"), 1); + ZVAL_STR(&const_AFTER_value, const_AFTER_value_str); + zend_string *const_AFTER_name = zend_string_init_interned("AFTER", sizeof("AFTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_AFTER_name, &const_AFTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_AFTER_name); + + zval const_LEFT_value; + zend_string *const_LEFT_value_str = zend_string_init("left", strlen("left"), 1); + ZVAL_STR(&const_LEFT_value, const_LEFT_value_str); + zend_string *const_LEFT_name = zend_string_init_interned("LEFT", sizeof("LEFT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LEFT_name, &const_LEFT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LEFT_name); + + zval const_RIGHT_value; + zend_string *const_RIGHT_value_str = zend_string_init("right", strlen("right"), 1); + ZVAL_STR(&const_RIGHT_value, const_RIGHT_value_str); + zend_string *const_RIGHT_name = zend_string_init_interned("RIGHT", sizeof("RIGHT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_RIGHT_name, &const_RIGHT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_RIGHT_name); + + zval const_OPT_MAX_RETRIES_value; + ZVAL_LONG(&const_OPT_MAX_RETRIES_value, REDIS_OPT_MAX_RETRIES); + zend_string *const_OPT_MAX_RETRIES_name = zend_string_init_interned("OPT_MAX_RETRIES", sizeof("OPT_MAX_RETRIES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_MAX_RETRIES_name, &const_OPT_MAX_RETRIES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_MAX_RETRIES_name); + + zval const_OPT_BACKOFF_ALGORITHM_value; + ZVAL_LONG(&const_OPT_BACKOFF_ALGORITHM_value, REDIS_OPT_BACKOFF_ALGORITHM); + zend_string *const_OPT_BACKOFF_ALGORITHM_name = zend_string_init_interned("OPT_BACKOFF_ALGORITHM", sizeof("OPT_BACKOFF_ALGORITHM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_BACKOFF_ALGORITHM_name, &const_OPT_BACKOFF_ALGORITHM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_BACKOFF_ALGORITHM_name); + + zval const_BACKOFF_ALGORITHM_DEFAULT_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_DEFAULT_value, REDIS_BACKOFF_ALGORITHM_DEFAULT); + zend_string *const_BACKOFF_ALGORITHM_DEFAULT_name = zend_string_init_interned("BACKOFF_ALGORITHM_DEFAULT", sizeof("BACKOFF_ALGORITHM_DEFAULT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_DEFAULT_name, &const_BACKOFF_ALGORITHM_DEFAULT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_DEFAULT_name); + + zval const_BACKOFF_ALGORITHM_CONSTANT_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_CONSTANT_value, REDIS_BACKOFF_ALGORITHM_CONSTANT); + zend_string *const_BACKOFF_ALGORITHM_CONSTANT_name = zend_string_init_interned("BACKOFF_ALGORITHM_CONSTANT", sizeof("BACKOFF_ALGORITHM_CONSTANT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_CONSTANT_name, &const_BACKOFF_ALGORITHM_CONSTANT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_CONSTANT_name); + + zval const_BACKOFF_ALGORITHM_UNIFORM_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_UNIFORM_value, REDIS_BACKOFF_ALGORITHM_UNIFORM); + zend_string *const_BACKOFF_ALGORITHM_UNIFORM_name = zend_string_init_interned("BACKOFF_ALGORITHM_UNIFORM", sizeof("BACKOFF_ALGORITHM_UNIFORM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_UNIFORM_name, &const_BACKOFF_ALGORITHM_UNIFORM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_UNIFORM_name); + + zval const_BACKOFF_ALGORITHM_EXPONENTIAL_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_EXPONENTIAL_value, REDIS_BACKOFF_ALGORITHM_EXPONENTIAL); + zend_string *const_BACKOFF_ALGORITHM_EXPONENTIAL_name = zend_string_init_interned("BACKOFF_ALGORITHM_EXPONENTIAL", sizeof("BACKOFF_ALGORITHM_EXPONENTIAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_EXPONENTIAL_name, &const_BACKOFF_ALGORITHM_EXPONENTIAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_EXPONENTIAL_name); + + zval const_BACKOFF_ALGORITHM_FULL_JITTER_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_FULL_JITTER_value, REDIS_BACKOFF_ALGORITHM_FULL_JITTER); + zend_string *const_BACKOFF_ALGORITHM_FULL_JITTER_name = zend_string_init_interned("BACKOFF_ALGORITHM_FULL_JITTER", sizeof("BACKOFF_ALGORITHM_FULL_JITTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_FULL_JITTER_name, &const_BACKOFF_ALGORITHM_FULL_JITTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_FULL_JITTER_name); + + zval const_BACKOFF_ALGORITHM_EQUAL_JITTER_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_EQUAL_JITTER_value, REDIS_BACKOFF_ALGORITHM_EQUAL_JITTER); + zend_string *const_BACKOFF_ALGORITHM_EQUAL_JITTER_name = zend_string_init_interned("BACKOFF_ALGORITHM_EQUAL_JITTER", sizeof("BACKOFF_ALGORITHM_EQUAL_JITTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_EQUAL_JITTER_name, &const_BACKOFF_ALGORITHM_EQUAL_JITTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_EQUAL_JITTER_name); + + zval const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_value, REDIS_BACKOFF_ALGORITHM_DECORRELATED_JITTER); + zend_string *const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_name = zend_string_init_interned("BACKOFF_ALGORITHM_DECORRELATED_JITTER", sizeof("BACKOFF_ALGORITHM_DECORRELATED_JITTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_name, &const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_name); + + zval const_OPT_BACKOFF_BASE_value; + ZVAL_LONG(&const_OPT_BACKOFF_BASE_value, REDIS_OPT_BACKOFF_BASE); + zend_string *const_OPT_BACKOFF_BASE_name = zend_string_init_interned("OPT_BACKOFF_BASE", sizeof("OPT_BACKOFF_BASE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_BACKOFF_BASE_name, &const_OPT_BACKOFF_BASE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_BACKOFF_BASE_name); + + zval const_OPT_BACKOFF_CAP_value; + ZVAL_LONG(&const_OPT_BACKOFF_CAP_value, REDIS_OPT_BACKOFF_CAP); + zend_string *const_OPT_BACKOFF_CAP_name = zend_string_init_interned("OPT_BACKOFF_CAP", sizeof("OPT_BACKOFF_CAP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_BACKOFF_CAP_name, &const_OPT_BACKOFF_CAP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_BACKOFF_CAP_name); #if (PHP_VERSION_ID >= 80200) diff --git a/redis_cluster.stub.php b/redis_cluster.stub.php index f8c5e51..73107dc 100644 --- a/redis_cluster.stub.php +++ b/redis_cluster.stub.php @@ -7,6 +7,45 @@ */ class RedisCluster { + /** + * + * @var int + * @cvalue REDIS_OPT_FAILOVER + * + */ + public const OPT_SLAVE_FAILOVER = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_FAILOVER_NONE + * + */ + public const FAILOVER_NONE = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_FAILOVER_ERROR + * + */ + public const FAILOVER_ERROR = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_FAILOVER_DISTRIBUTE + * + */ + public const FAILOVER_DISTRIBUTE = UNKNOWN; + + /** + * + * @var int + * @cvalue REDIS_FAILOVER_DISTRIBUTE_SLAVES + * + */ + public const FAILOVER_DISTRIBUTE_SLAVES = UNKNOWN; public function __construct(string|null $name, array $seeds = NULL, int|float $timeout = 0, int|float $read_timeout = 0, bool $persistent = false, #[\SensitiveParameter] mixed $auth = NULL, array $context = NULL); diff --git a/redis_cluster_arginfo.h b/redis_cluster_arginfo.h index b22eae2..7341027 100644 --- a/redis_cluster_arginfo.h +++ b/redis_cluster_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 2f2132e45b1d60011f8ef9298cb35b7ba2b247d5 */ + * Stub hash: f4e2b11cf48fc70db77a52e79443536ad850d06f */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 1) @@ -1391,6 +1391,36 @@ static zend_class_entry *register_class_RedisCluster(void) INIT_CLASS_ENTRY(ce, "RedisCluster", class_RedisCluster_methods); class_entry = zend_register_internal_class_ex(&ce, NULL); + + zval const_OPT_SLAVE_FAILOVER_value; + ZVAL_LONG(&const_OPT_SLAVE_FAILOVER_value, REDIS_OPT_FAILOVER); + zend_string *const_OPT_SLAVE_FAILOVER_name = zend_string_init_interned("OPT_SLAVE_FAILOVER", sizeof("OPT_SLAVE_FAILOVER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_SLAVE_FAILOVER_name, &const_OPT_SLAVE_FAILOVER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_SLAVE_FAILOVER_name); + + zval const_FAILOVER_NONE_value; + ZVAL_LONG(&const_FAILOVER_NONE_value, REDIS_FAILOVER_NONE); + zend_string *const_FAILOVER_NONE_name = zend_string_init_interned("FAILOVER_NONE", sizeof("FAILOVER_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FAILOVER_NONE_name, &const_FAILOVER_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FAILOVER_NONE_name); + + zval const_FAILOVER_ERROR_value; + ZVAL_LONG(&const_FAILOVER_ERROR_value, REDIS_FAILOVER_ERROR); + zend_string *const_FAILOVER_ERROR_name = zend_string_init_interned("FAILOVER_ERROR", sizeof("FAILOVER_ERROR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FAILOVER_ERROR_name, &const_FAILOVER_ERROR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FAILOVER_ERROR_name); + + zval const_FAILOVER_DISTRIBUTE_value; + ZVAL_LONG(&const_FAILOVER_DISTRIBUTE_value, REDIS_FAILOVER_DISTRIBUTE); + zend_string *const_FAILOVER_DISTRIBUTE_name = zend_string_init_interned("FAILOVER_DISTRIBUTE", sizeof("FAILOVER_DISTRIBUTE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FAILOVER_DISTRIBUTE_name, &const_FAILOVER_DISTRIBUTE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FAILOVER_DISTRIBUTE_name); + + zval const_FAILOVER_DISTRIBUTE_SLAVES_value; + ZVAL_LONG(&const_FAILOVER_DISTRIBUTE_SLAVES_value, REDIS_FAILOVER_DISTRIBUTE_SLAVES); + zend_string *const_FAILOVER_DISTRIBUTE_SLAVES_name = zend_string_init_interned("FAILOVER_DISTRIBUTE_SLAVES", sizeof("FAILOVER_DISTRIBUTE_SLAVES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FAILOVER_DISTRIBUTE_SLAVES_name, &const_FAILOVER_DISTRIBUTE_SLAVES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FAILOVER_DISTRIBUTE_SLAVES_name); #if (PHP_VERSION_ID >= 80200) diff --git a/redis_cluster_legacy_arginfo.h b/redis_cluster_legacy_arginfo.h index 99b257a..5b2ea77 100644 --- a/redis_cluster_legacy_arginfo.h +++ b/redis_cluster_legacy_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 2f2132e45b1d60011f8ef9298cb35b7ba2b247d5 */ + * Stub hash: f4e2b11cf48fc70db77a52e79443536ad850d06f */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1) ZEND_ARG_INFO(0, name) @@ -1243,6 +1243,36 @@ static zend_class_entry *register_class_RedisCluster(void) INIT_CLASS_ENTRY(ce, "RedisCluster", class_RedisCluster_methods); class_entry = zend_register_internal_class_ex(&ce, NULL); + zval const_OPT_SLAVE_FAILOVER_value; + ZVAL_LONG(&const_OPT_SLAVE_FAILOVER_value, REDIS_OPT_FAILOVER); + zend_string *const_OPT_SLAVE_FAILOVER_name = zend_string_init_interned("OPT_SLAVE_FAILOVER", sizeof("OPT_SLAVE_FAILOVER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_SLAVE_FAILOVER_name, &const_OPT_SLAVE_FAILOVER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_SLAVE_FAILOVER_name); + + zval const_FAILOVER_NONE_value; + ZVAL_LONG(&const_FAILOVER_NONE_value, REDIS_FAILOVER_NONE); + zend_string *const_FAILOVER_NONE_name = zend_string_init_interned("FAILOVER_NONE", sizeof("FAILOVER_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FAILOVER_NONE_name, &const_FAILOVER_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FAILOVER_NONE_name); + + zval const_FAILOVER_ERROR_value; + ZVAL_LONG(&const_FAILOVER_ERROR_value, REDIS_FAILOVER_ERROR); + zend_string *const_FAILOVER_ERROR_name = zend_string_init_interned("FAILOVER_ERROR", sizeof("FAILOVER_ERROR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FAILOVER_ERROR_name, &const_FAILOVER_ERROR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FAILOVER_ERROR_name); + + zval const_FAILOVER_DISTRIBUTE_value; + ZVAL_LONG(&const_FAILOVER_DISTRIBUTE_value, REDIS_FAILOVER_DISTRIBUTE); + zend_string *const_FAILOVER_DISTRIBUTE_name = zend_string_init_interned("FAILOVER_DISTRIBUTE", sizeof("FAILOVER_DISTRIBUTE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FAILOVER_DISTRIBUTE_name, &const_FAILOVER_DISTRIBUTE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FAILOVER_DISTRIBUTE_name); + + zval const_FAILOVER_DISTRIBUTE_SLAVES_value; + ZVAL_LONG(&const_FAILOVER_DISTRIBUTE_SLAVES_value, REDIS_FAILOVER_DISTRIBUTE_SLAVES); + zend_string *const_FAILOVER_DISTRIBUTE_SLAVES_name = zend_string_init_interned("FAILOVER_DISTRIBUTE_SLAVES", sizeof("FAILOVER_DISTRIBUTE_SLAVES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FAILOVER_DISTRIBUTE_SLAVES_name, &const_FAILOVER_DISTRIBUTE_SLAVES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FAILOVER_DISTRIBUTE_SLAVES_name); + return class_entry; } diff --git a/redis_legacy_arginfo.h b/redis_legacy_arginfo.h index 9c24f56..025f3a1 100644 --- a/redis_legacy_arginfo.h +++ b/redis_legacy_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: b18973c6cdb4ae3a706dfd1ad5645339f0fcdd84 */ + * Stub hash: 27f05179a82a7b33198a3a707134d9da5597ab1c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis___construct, 0, 0, 0) ZEND_ARG_INFO(0, options) @@ -1485,6 +1485,334 @@ static zend_class_entry *register_class_Redis(void) INIT_CLASS_ENTRY(ce, "Redis", class_Redis_methods); class_entry = zend_register_internal_class_ex(&ce, NULL); + zval const_REDIS_NOT_FOUND_value; + ZVAL_LONG(&const_REDIS_NOT_FOUND_value, REDIS_NOT_FOUND); + zend_string *const_REDIS_NOT_FOUND_name = zend_string_init_interned("REDIS_NOT_FOUND", sizeof("REDIS_NOT_FOUND") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_NOT_FOUND_name, &const_REDIS_NOT_FOUND_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_NOT_FOUND_name); + + zval const_REDIS_STRING_value; + ZVAL_LONG(&const_REDIS_STRING_value, REDIS_STRING); + zend_string *const_REDIS_STRING_name = zend_string_init_interned("REDIS_STRING", sizeof("REDIS_STRING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_STRING_name, &const_REDIS_STRING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_STRING_name); + + zval const_REDIS_SET_value; + ZVAL_LONG(&const_REDIS_SET_value, REDIS_SET); + zend_string *const_REDIS_SET_name = zend_string_init_interned("REDIS_SET", sizeof("REDIS_SET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_SET_name, &const_REDIS_SET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_SET_name); + + zval const_REDIS_LIST_value; + ZVAL_LONG(&const_REDIS_LIST_value, REDIS_LIST); + zend_string *const_REDIS_LIST_name = zend_string_init_interned("REDIS_LIST", sizeof("REDIS_LIST") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_LIST_name, &const_REDIS_LIST_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_LIST_name); + + zval const_REDIS_ZSET_value; + ZVAL_LONG(&const_REDIS_ZSET_value, REDIS_ZSET); + zend_string *const_REDIS_ZSET_name = zend_string_init_interned("REDIS_ZSET", sizeof("REDIS_ZSET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_ZSET_name, &const_REDIS_ZSET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_ZSET_name); + + zval const_REDIS_HASH_value; + ZVAL_LONG(&const_REDIS_HASH_value, REDIS_HASH); + zend_string *const_REDIS_HASH_name = zend_string_init_interned("REDIS_HASH", sizeof("REDIS_HASH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_HASH_name, &const_REDIS_HASH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_HASH_name); + + zval const_REDIS_STREAM_value; + ZVAL_LONG(&const_REDIS_STREAM_value, REDIS_STREAM); + zend_string *const_REDIS_STREAM_name = zend_string_init_interned("REDIS_STREAM", sizeof("REDIS_STREAM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REDIS_STREAM_name, &const_REDIS_STREAM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REDIS_STREAM_name); + + zval const_ATOMIC_value; + ZVAL_LONG(&const_ATOMIC_value, ATOMIC); + zend_string *const_ATOMIC_name = zend_string_init_interned("ATOMIC", sizeof("ATOMIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ATOMIC_name, &const_ATOMIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ATOMIC_name); + + zval const_MULTI_value; + ZVAL_LONG(&const_MULTI_value, MULTI); + zend_string *const_MULTI_name = zend_string_init_interned("MULTI", sizeof("MULTI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MULTI_name, &const_MULTI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MULTI_name); + + zval const_PIPELINE_value; + ZVAL_LONG(&const_PIPELINE_value, PIPELINE); + zend_string *const_PIPELINE_name = zend_string_init_interned("PIPELINE", sizeof("PIPELINE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PIPELINE_name, &const_PIPELINE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PIPELINE_name); + + zval const_OPT_SERIALIZER_value; + ZVAL_LONG(&const_OPT_SERIALIZER_value, REDIS_OPT_SERIALIZER); + zend_string *const_OPT_SERIALIZER_name = zend_string_init_interned("OPT_SERIALIZER", sizeof("OPT_SERIALIZER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_SERIALIZER_name, &const_OPT_SERIALIZER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_SERIALIZER_name); + + zval const_OPT_PREFIX_value; + ZVAL_LONG(&const_OPT_PREFIX_value, REDIS_OPT_PREFIX); + zend_string *const_OPT_PREFIX_name = zend_string_init_interned("OPT_PREFIX", sizeof("OPT_PREFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_PREFIX_name, &const_OPT_PREFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_PREFIX_name); + + zval const_OPT_READ_TIMEOUT_value; + ZVAL_LONG(&const_OPT_READ_TIMEOUT_value, REDIS_OPT_READ_TIMEOUT); + zend_string *const_OPT_READ_TIMEOUT_name = zend_string_init_interned("OPT_READ_TIMEOUT", sizeof("OPT_READ_TIMEOUT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_READ_TIMEOUT_name, &const_OPT_READ_TIMEOUT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_READ_TIMEOUT_name); + + zval const_OPT_TCP_KEEPALIVE_value; + ZVAL_LONG(&const_OPT_TCP_KEEPALIVE_value, REDIS_OPT_TCP_KEEPALIVE); + zend_string *const_OPT_TCP_KEEPALIVE_name = zend_string_init_interned("OPT_TCP_KEEPALIVE", sizeof("OPT_TCP_KEEPALIVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_TCP_KEEPALIVE_name, &const_OPT_TCP_KEEPALIVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_TCP_KEEPALIVE_name); + + zval const_OPT_COMPRESSION_value; + ZVAL_LONG(&const_OPT_COMPRESSION_value, REDIS_OPT_COMPRESSION); + zend_string *const_OPT_COMPRESSION_name = zend_string_init_interned("OPT_COMPRESSION", sizeof("OPT_COMPRESSION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_COMPRESSION_name, &const_OPT_COMPRESSION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_COMPRESSION_name); + + zval const_OPT_REPLY_LITERAL_value; + ZVAL_LONG(&const_OPT_REPLY_LITERAL_value, REDIS_OPT_REPLY_LITERAL); + zend_string *const_OPT_REPLY_LITERAL_name = zend_string_init_interned("OPT_REPLY_LITERAL", sizeof("OPT_REPLY_LITERAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_REPLY_LITERAL_name, &const_OPT_REPLY_LITERAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_REPLY_LITERAL_name); + + zval const_OPT_COMPRESSION_LEVEL_value; + ZVAL_LONG(&const_OPT_COMPRESSION_LEVEL_value, REDIS_OPT_COMPRESSION_LEVEL); + zend_string *const_OPT_COMPRESSION_LEVEL_name = zend_string_init_interned("OPT_COMPRESSION_LEVEL", sizeof("OPT_COMPRESSION_LEVEL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_COMPRESSION_LEVEL_name, &const_OPT_COMPRESSION_LEVEL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_COMPRESSION_LEVEL_name); + + zval const_OPT_NULL_MULTIBULK_AS_NULL_value; + ZVAL_LONG(&const_OPT_NULL_MULTIBULK_AS_NULL_value, REDIS_OPT_NULL_MBULK_AS_NULL); + zend_string *const_OPT_NULL_MULTIBULK_AS_NULL_name = zend_string_init_interned("OPT_NULL_MULTIBULK_AS_NULL", sizeof("OPT_NULL_MULTIBULK_AS_NULL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_NULL_MULTIBULK_AS_NULL_name, &const_OPT_NULL_MULTIBULK_AS_NULL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_NULL_MULTIBULK_AS_NULL_name); + + zval const_SERIALIZER_NONE_value; + ZVAL_LONG(&const_SERIALIZER_NONE_value, REDIS_SERIALIZER_NONE); + zend_string *const_SERIALIZER_NONE_name = zend_string_init_interned("SERIALIZER_NONE", sizeof("SERIALIZER_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SERIALIZER_NONE_name, &const_SERIALIZER_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SERIALIZER_NONE_name); + + zval const_SERIALIZER_PHP_value; + ZVAL_LONG(&const_SERIALIZER_PHP_value, REDIS_SERIALIZER_PHP); + zend_string *const_SERIALIZER_PHP_name = zend_string_init_interned("SERIALIZER_PHP", sizeof("SERIALIZER_PHP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SERIALIZER_PHP_name, &const_SERIALIZER_PHP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SERIALIZER_PHP_name); +#if defined(HAVE_REDIS_IGBINARY) + + zval const_SERIALIZER_IGBINARY_value; + ZVAL_LONG(&const_SERIALIZER_IGBINARY_value, REDIS_SERIALIZER_IGBINARY); + zend_string *const_SERIALIZER_IGBINARY_name = zend_string_init_interned("SERIALIZER_IGBINARY", sizeof("SERIALIZER_IGBINARY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SERIALIZER_IGBINARY_name, &const_SERIALIZER_IGBINARY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SERIALIZER_IGBINARY_name); +#endif +#if defined(HAVE_REDIS_MSGPACK) + + zval const_SERIALIZER_MSGPACK_value; + ZVAL_LONG(&const_SERIALIZER_MSGPACK_value, REDIS_SERIALIZER_MSGPACK); + zend_string *const_SERIALIZER_MSGPACK_name = zend_string_init_interned("SERIALIZER_MSGPACK", sizeof("SERIALIZER_MSGPACK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SERIALIZER_MSGPACK_name, &const_SERIALIZER_MSGPACK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SERIALIZER_MSGPACK_name); +#endif + + zval const_SERIALIZER_JSON_value; + ZVAL_LONG(&const_SERIALIZER_JSON_value, REDIS_SERIALIZER_JSON); + zend_string *const_SERIALIZER_JSON_name = zend_string_init_interned("SERIALIZER_JSON", sizeof("SERIALIZER_JSON") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SERIALIZER_JSON_name, &const_SERIALIZER_JSON_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SERIALIZER_JSON_name); + + zval const_COMPRESSION_NONE_value; + ZVAL_LONG(&const_COMPRESSION_NONE_value, REDIS_COMPRESSION_NONE); + zend_string *const_COMPRESSION_NONE_name = zend_string_init_interned("COMPRESSION_NONE", sizeof("COMPRESSION_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_NONE_name, &const_COMPRESSION_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_NONE_name); +#if defined(HAVE_REDIS_LZF) + + zval const_COMPRESSION_LZF_value; + ZVAL_LONG(&const_COMPRESSION_LZF_value, REDIS_COMPRESSION_LZF); + zend_string *const_COMPRESSION_LZF_name = zend_string_init_interned("COMPRESSION_LZF", sizeof("COMPRESSION_LZF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_LZF_name, &const_COMPRESSION_LZF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_LZF_name); +#endif +#if defined(HAVE_REDIS_ZSTD) + + zval const_COMPRESSION_ZSTD_value; + ZVAL_LONG(&const_COMPRESSION_ZSTD_value, REDIS_COMPRESSION_ZSTD); + zend_string *const_COMPRESSION_ZSTD_name = zend_string_init_interned("COMPRESSION_ZSTD", sizeof("COMPRESSION_ZSTD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_ZSTD_name, &const_COMPRESSION_ZSTD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_ZSTD_name); +#endif +#if defined(HAVE_REDIS_ZSTD) && defined(ZSTD_CLEVEL_DEFAULT) + + zval const_COMPRESSION_ZSTD_DEFAULT_value; + ZVAL_LONG(&const_COMPRESSION_ZSTD_DEFAULT_value, ZSTD_CLEVEL_DEFAULT); + zend_string *const_COMPRESSION_ZSTD_DEFAULT_name = zend_string_init_interned("COMPRESSION_ZSTD_DEFAULT", sizeof("COMPRESSION_ZSTD_DEFAULT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_ZSTD_DEFAULT_name, &const_COMPRESSION_ZSTD_DEFAULT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_ZSTD_DEFAULT_name); +#endif +#if defined(HAVE_REDIS_ZSTD) && !(defined(ZSTD_CLEVEL_DEFAULT)) + + zval const_COMPRESSION_ZSTD_DEFAULT_value; + ZVAL_LONG(&const_COMPRESSION_ZSTD_DEFAULT_value, 3); + zend_string *const_COMPRESSION_ZSTD_DEFAULT_name = zend_string_init_interned("COMPRESSION_ZSTD_DEFAULT", sizeof("COMPRESSION_ZSTD_DEFAULT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_ZSTD_DEFAULT_name, &const_COMPRESSION_ZSTD_DEFAULT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_ZSTD_DEFAULT_name); +#endif +#if defined(HAVE_REDIS_ZSTD) && defined(ZSTD_CLEVEL_MAX) + + zval const_COMPRESSION_ZSTD_MAX_value; + ZVAL_LONG(&const_COMPRESSION_ZSTD_MAX_value, ZSTD_CLEVEL_MAX); + zend_string *const_COMPRESSION_ZSTD_MAX_name = zend_string_init_interned("COMPRESSION_ZSTD_MAX", sizeof("COMPRESSION_ZSTD_MAX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_ZSTD_MAX_name, &const_COMPRESSION_ZSTD_MAX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_ZSTD_MAX_name); +#endif +#if defined(HAVE_REDIS_ZSTD) + + zval const_COMPRESSION_ZSTD_MAX_value; + ZVAL_LONG(&const_COMPRESSION_ZSTD_MAX_value, ZSTD_maxCLevel()); + zend_string *const_COMPRESSION_ZSTD_MAX_name = zend_string_init_interned("COMPRESSION_ZSTD_MAX", sizeof("COMPRESSION_ZSTD_MAX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_ZSTD_MAX_name, &const_COMPRESSION_ZSTD_MAX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_ZSTD_MAX_name); +#endif +#if defined(HAVE_REDIS_LZ4) + + zval const_COMPRESSION_LZ4_value; + ZVAL_LONG(&const_COMPRESSION_LZ4_value, REDIS_COMPRESSION_LZ4); + zend_string *const_COMPRESSION_LZ4_name = zend_string_init_interned("COMPRESSION_LZ4", sizeof("COMPRESSION_LZ4") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_COMPRESSION_LZ4_name, &const_COMPRESSION_LZ4_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_COMPRESSION_LZ4_name); +#endif + + zval const_OPT_SCAN_value; + ZVAL_LONG(&const_OPT_SCAN_value, REDIS_OPT_SCAN); + zend_string *const_OPT_SCAN_name = zend_string_init_interned("OPT_SCAN", sizeof("OPT_SCAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_SCAN_name, &const_OPT_SCAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_SCAN_name); + + zval const_SCAN_RETRY_value; + ZVAL_LONG(&const_SCAN_RETRY_value, REDIS_SCAN_RETRY); + zend_string *const_SCAN_RETRY_name = zend_string_init_interned("SCAN_RETRY", sizeof("SCAN_RETRY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SCAN_RETRY_name, &const_SCAN_RETRY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SCAN_RETRY_name); + + zval const_SCAN_NORETRY_value; + ZVAL_LONG(&const_SCAN_NORETRY_value, REDIS_SCAN_NORETRY); + zend_string *const_SCAN_NORETRY_name = zend_string_init_interned("SCAN_NORETRY", sizeof("SCAN_NORETRY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SCAN_NORETRY_name, &const_SCAN_NORETRY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SCAN_NORETRY_name); + + zval const_SCAN_PREFIX_value; + ZVAL_LONG(&const_SCAN_PREFIX_value, REDIS_SCAN_PREFIX); + zend_string *const_SCAN_PREFIX_name = zend_string_init_interned("SCAN_PREFIX", sizeof("SCAN_PREFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SCAN_PREFIX_name, &const_SCAN_PREFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SCAN_PREFIX_name); + + zval const_SCAN_NOPREFIX_value; + ZVAL_LONG(&const_SCAN_NOPREFIX_value, REDIS_SCAN_NOPREFIX); + zend_string *const_SCAN_NOPREFIX_name = zend_string_init_interned("SCAN_NOPREFIX", sizeof("SCAN_NOPREFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SCAN_NOPREFIX_name, &const_SCAN_NOPREFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SCAN_NOPREFIX_name); + + zval const_BEFORE_value; + zend_string *const_BEFORE_value_str = zend_string_init("before", strlen("before"), 1); + ZVAL_STR(&const_BEFORE_value, const_BEFORE_value_str); + zend_string *const_BEFORE_name = zend_string_init_interned("BEFORE", sizeof("BEFORE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BEFORE_name, &const_BEFORE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BEFORE_name); + + zval const_AFTER_value; + zend_string *const_AFTER_value_str = zend_string_init("after", strlen("after"), 1); + ZVAL_STR(&const_AFTER_value, const_AFTER_value_str); + zend_string *const_AFTER_name = zend_string_init_interned("AFTER", sizeof("AFTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_AFTER_name, &const_AFTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_AFTER_name); + + zval const_LEFT_value; + zend_string *const_LEFT_value_str = zend_string_init("left", strlen("left"), 1); + ZVAL_STR(&const_LEFT_value, const_LEFT_value_str); + zend_string *const_LEFT_name = zend_string_init_interned("LEFT", sizeof("LEFT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LEFT_name, &const_LEFT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LEFT_name); + + zval const_RIGHT_value; + zend_string *const_RIGHT_value_str = zend_string_init("right", strlen("right"), 1); + ZVAL_STR(&const_RIGHT_value, const_RIGHT_value_str); + zend_string *const_RIGHT_name = zend_string_init_interned("RIGHT", sizeof("RIGHT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_RIGHT_name, &const_RIGHT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_RIGHT_name); + + zval const_OPT_MAX_RETRIES_value; + ZVAL_LONG(&const_OPT_MAX_RETRIES_value, REDIS_OPT_MAX_RETRIES); + zend_string *const_OPT_MAX_RETRIES_name = zend_string_init_interned("OPT_MAX_RETRIES", sizeof("OPT_MAX_RETRIES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_MAX_RETRIES_name, &const_OPT_MAX_RETRIES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_MAX_RETRIES_name); + + zval const_OPT_BACKOFF_ALGORITHM_value; + ZVAL_LONG(&const_OPT_BACKOFF_ALGORITHM_value, REDIS_OPT_BACKOFF_ALGORITHM); + zend_string *const_OPT_BACKOFF_ALGORITHM_name = zend_string_init_interned("OPT_BACKOFF_ALGORITHM", sizeof("OPT_BACKOFF_ALGORITHM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_BACKOFF_ALGORITHM_name, &const_OPT_BACKOFF_ALGORITHM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_BACKOFF_ALGORITHM_name); + + zval const_BACKOFF_ALGORITHM_DEFAULT_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_DEFAULT_value, REDIS_BACKOFF_ALGORITHM_DEFAULT); + zend_string *const_BACKOFF_ALGORITHM_DEFAULT_name = zend_string_init_interned("BACKOFF_ALGORITHM_DEFAULT", sizeof("BACKOFF_ALGORITHM_DEFAULT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_DEFAULT_name, &const_BACKOFF_ALGORITHM_DEFAULT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_DEFAULT_name); + + zval const_BACKOFF_ALGORITHM_CONSTANT_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_CONSTANT_value, REDIS_BACKOFF_ALGORITHM_CONSTANT); + zend_string *const_BACKOFF_ALGORITHM_CONSTANT_name = zend_string_init_interned("BACKOFF_ALGORITHM_CONSTANT", sizeof("BACKOFF_ALGORITHM_CONSTANT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_CONSTANT_name, &const_BACKOFF_ALGORITHM_CONSTANT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_CONSTANT_name); + + zval const_BACKOFF_ALGORITHM_UNIFORM_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_UNIFORM_value, REDIS_BACKOFF_ALGORITHM_UNIFORM); + zend_string *const_BACKOFF_ALGORITHM_UNIFORM_name = zend_string_init_interned("BACKOFF_ALGORITHM_UNIFORM", sizeof("BACKOFF_ALGORITHM_UNIFORM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_UNIFORM_name, &const_BACKOFF_ALGORITHM_UNIFORM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_UNIFORM_name); + + zval const_BACKOFF_ALGORITHM_EXPONENTIAL_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_EXPONENTIAL_value, REDIS_BACKOFF_ALGORITHM_EXPONENTIAL); + zend_string *const_BACKOFF_ALGORITHM_EXPONENTIAL_name = zend_string_init_interned("BACKOFF_ALGORITHM_EXPONENTIAL", sizeof("BACKOFF_ALGORITHM_EXPONENTIAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_EXPONENTIAL_name, &const_BACKOFF_ALGORITHM_EXPONENTIAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_EXPONENTIAL_name); + + zval const_BACKOFF_ALGORITHM_FULL_JITTER_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_FULL_JITTER_value, REDIS_BACKOFF_ALGORITHM_FULL_JITTER); + zend_string *const_BACKOFF_ALGORITHM_FULL_JITTER_name = zend_string_init_interned("BACKOFF_ALGORITHM_FULL_JITTER", sizeof("BACKOFF_ALGORITHM_FULL_JITTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_FULL_JITTER_name, &const_BACKOFF_ALGORITHM_FULL_JITTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_FULL_JITTER_name); + + zval const_BACKOFF_ALGORITHM_EQUAL_JITTER_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_EQUAL_JITTER_value, REDIS_BACKOFF_ALGORITHM_EQUAL_JITTER); + zend_string *const_BACKOFF_ALGORITHM_EQUAL_JITTER_name = zend_string_init_interned("BACKOFF_ALGORITHM_EQUAL_JITTER", sizeof("BACKOFF_ALGORITHM_EQUAL_JITTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_EQUAL_JITTER_name, &const_BACKOFF_ALGORITHM_EQUAL_JITTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_EQUAL_JITTER_name); + + zval const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_value; + ZVAL_LONG(&const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_value, REDIS_BACKOFF_ALGORITHM_DECORRELATED_JITTER); + zend_string *const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_name = zend_string_init_interned("BACKOFF_ALGORITHM_DECORRELATED_JITTER", sizeof("BACKOFF_ALGORITHM_DECORRELATED_JITTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_name, &const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BACKOFF_ALGORITHM_DECORRELATED_JITTER_name); + + zval const_OPT_BACKOFF_BASE_value; + ZVAL_LONG(&const_OPT_BACKOFF_BASE_value, REDIS_OPT_BACKOFF_BASE); + zend_string *const_OPT_BACKOFF_BASE_name = zend_string_init_interned("OPT_BACKOFF_BASE", sizeof("OPT_BACKOFF_BASE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_BACKOFF_BASE_name, &const_OPT_BACKOFF_BASE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_BACKOFF_BASE_name); + + zval const_OPT_BACKOFF_CAP_value; + ZVAL_LONG(&const_OPT_BACKOFF_CAP_value, REDIS_OPT_BACKOFF_CAP); + zend_string *const_OPT_BACKOFF_CAP_name = zend_string_init_interned("OPT_BACKOFF_CAP", sizeof("OPT_BACKOFF_CAP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPT_BACKOFF_CAP_name, &const_OPT_BACKOFF_CAP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPT_BACKOFF_CAP_name); + return class_entry; }