diff options
author | Nicolas Favre-Felix <n.favrefelix@gmail.com> | 2011-11-27 23:57:39 +0400 |
---|---|---|
committer | Nicolas Favre-Felix <n.favrefelix@gmail.com> | 2011-11-27 23:57:39 +0400 |
commit | 7781557bb1c09584d47b9132015688810da1514d (patch) | |
tree | 1b3d9fe789e044354aece8414f8a743218d0dcd8 /redis_array.c | |
parent | 1ce8bcc5340bcf928ccca72a043ec0c44a4e19ac (diff) |
Added missing UNWATCH.
Possibly resolves GitHub issue #86 (TBC).
Diffstat (limited to 'redis_array.c')
-rw-r--r-- | redis_array.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/redis_array.c b/redis_array.c index cf67cfe2..e1955735 100644 --- a/redis_array.c +++ b/redis_array.c @@ -61,6 +61,7 @@ zend_function_entry redis_array_functions[] = { PHP_ME(RedisArray, multi, NULL, ZEND_ACC_PUBLIC) PHP_ME(RedisArray, exec, NULL, ZEND_ACC_PUBLIC) PHP_ME(RedisArray, discard, NULL, ZEND_ACC_PUBLIC) + PHP_ME(RedisArray, unwatch, NULL, ZEND_ACC_PUBLIC) /* Aliases */ PHP_MALIAS(RedisArray, delete, del, NULL, ZEND_ACC_PUBLIC) @@ -1049,3 +1050,21 @@ PHP_METHOD(RedisArray, discard) /* remove multi object */ ra->z_multi_exec = NULL; } + +PHP_METHOD(RedisArray, unwatch) +{ + zval *object; + RedisArray *ra; + + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", + &object, redis_array_ce) == FAILURE) { + RETURN_FALSE; + } + + if (redis_array_get(object, &ra TSRMLS_CC) < 0 || !ra->z_multi_exec) { + RETURN_FALSE; + } + + /* unwatch keys, stay in multi/exec mode. */ + ra_index_unwatch(ra->z_multi_exec, return_value TSRMLS_CC); +} |