Skip to content

Commit

Permalink
Change type of RedisArray pure_cmds to HashTable
Browse files Browse the repository at this point in the history
  • Loading branch information
yatsukhnenko committed Aug 4, 2017
1 parent 89f9c06 commit a56ed7f
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 40 deletions.
7 changes: 3 additions & 4 deletions redis_array.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,8 @@ redis_array_free(RedisArray *ra)
zval_dtor(&ra->z_dist);

/* Delete pur commands */
zval_dtor(&ra->z_pure_cmds);
zend_hash_destroy(ra->pure_cmds);
FREE_HASHTABLE(ra->pure_cmds);

/* Free structure itself */
efree(ra);
Expand Down Expand Up @@ -213,9 +214,7 @@ redis_array_get(zval *id TSRMLS_DC)
#else
obj = (redis_array_object *)((char *)Z_OBJ_P(id) - XtOffsetOf(redis_array_object, std));
#endif
if (obj->ra) {
return obj->ra;
}
return obj->ra;
}
return NULL;
}
Expand Down
2 changes: 1 addition & 1 deletion redis_array.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ typedef struct RedisArray_ {
zend_bool pconnect; /* should we use pconnect */
zval z_fun; /* key extractor, callable */
zval z_dist; /* key distributor, callable */
zval z_pure_cmds; /* hash table */
HashTable *pure_cmds; /* hash table */
double connect_timeout; /* socket connect timeout */
double read_timeout; /* socket read timeout */

Expand Down
71 changes: 36 additions & 35 deletions redis_array_impl.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,40 +99,41 @@ ra_load_hosts(RedisArray *ra, HashTable *hosts, long retry_interval, zend_bool b
void
ra_init_function_table(RedisArray *ra)
{
array_init(&ra->z_pure_cmds);

add_assoc_bool(&ra->z_pure_cmds, "EXISTS", 1);
add_assoc_bool(&ra->z_pure_cmds, "GET", 1);
add_assoc_bool(&ra->z_pure_cmds, "GETBIT", 1);
add_assoc_bool(&ra->z_pure_cmds, "GETRANGE", 1);
add_assoc_bool(&ra->z_pure_cmds, "HEXISTS", 1);
add_assoc_bool(&ra->z_pure_cmds, "HGET", 1);
add_assoc_bool(&ra->z_pure_cmds, "HGETALL", 1);
add_assoc_bool(&ra->z_pure_cmds, "HKEYS", 1);
add_assoc_bool(&ra->z_pure_cmds, "HLEN", 1);
add_assoc_bool(&ra->z_pure_cmds, "HMGET", 1);
add_assoc_bool(&ra->z_pure_cmds, "HVALS", 1);
add_assoc_bool(&ra->z_pure_cmds, "LINDEX", 1);
add_assoc_bool(&ra->z_pure_cmds, "LLEN", 1);
add_assoc_bool(&ra->z_pure_cmds, "LRANGE", 1);
add_assoc_bool(&ra->z_pure_cmds, "OBJECT", 1);
add_assoc_bool(&ra->z_pure_cmds, "SCARD", 1);
add_assoc_bool(&ra->z_pure_cmds, "SDIFF", 1);
add_assoc_bool(&ra->z_pure_cmds, "SINTER", 1);
add_assoc_bool(&ra->z_pure_cmds, "SISMEMBER", 1);
add_assoc_bool(&ra->z_pure_cmds, "SMEMBERS", 1);
add_assoc_bool(&ra->z_pure_cmds, "SRANDMEMBER", 1);
add_assoc_bool(&ra->z_pure_cmds, "STRLEN", 1);
add_assoc_bool(&ra->z_pure_cmds, "SUNION", 1);
add_assoc_bool(&ra->z_pure_cmds, "TYPE", 1);
add_assoc_bool(&ra->z_pure_cmds, "ZCARD", 1);
add_assoc_bool(&ra->z_pure_cmds, "ZCOUNT", 1);
add_assoc_bool(&ra->z_pure_cmds, "ZRANGE", 1);
add_assoc_bool(&ra->z_pure_cmds, "ZRANK", 1);
add_assoc_bool(&ra->z_pure_cmds, "ZREVRANGE", 1);
add_assoc_bool(&ra->z_pure_cmds, "ZREVRANGEBYSCORE", 1);
add_assoc_bool(&ra->z_pure_cmds, "ZREVRANK", 1);
add_assoc_bool(&ra->z_pure_cmds, "ZSCORE", 1);
ALLOC_HASHTABLE(ra->pure_cmds);
zend_hash_init(ra->pure_cmds, 0, NULL, NULL, 0);

zend_hash_str_update_ptr(ra->pure_cmds, "EXISTS", sizeof("EXISTS") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "GET", sizeof("GET") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "GETBIT", sizeof("GETBIT") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "GETRANGE", sizeof("GETRANGE") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "HEXISTS", sizeof("HEXISTS") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "HGET", sizeof("HGET") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "HGETALL", sizeof("HGETALL") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "HKEYS", sizeof("HKEYS") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "HLEN", sizeof("HLEN") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "HMGET", sizeof("HMGET") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "HVALS", sizeof("HVALS") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "LINDEX", sizeof("LINDEX") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "LLEN", sizeof("LLEN") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "LRANGE", sizeof("LRANGE") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "OBJECT", sizeof("OBJECT") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "SCARD", sizeof("SCARD") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "SDIFF", sizeof("SDIFF") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "SINTER", sizeof("SINTER") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "SISMEMBER", sizeof("SISMEMBER") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "SMEMBERS", sizeof("SMEMBERS") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "SRANDMEMBER", sizeof("SRANDMEMBER") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "STRLEN", sizeof("STRLEN") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "SUNION", sizeof("SUNION") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "TYPE", sizeof("TYPE") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "ZCARD", sizeof("ZCARD") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "ZCOUNT", sizeof("ZCOUNT") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "ZRANGE", sizeof("ZRANGE") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "ZRANK", sizeof("ZRANK") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "ZREVRANGE", sizeof("ZREVRANGE") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "ZREVRANGEBYSCORE", sizeof("ZREVRANGEBYSCORE") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "ZREVRANK", sizeof("ZREVRANK") - 1, NULL);
zend_hash_str_update_ptr(ra->pure_cmds, "ZSCORE", sizeof("ZSCORE") - 1, NULL);
}

static int
Expand Down Expand Up @@ -687,7 +688,7 @@ ra_is_write_cmd(RedisArray *ra, const char *cmd, int cmd_len) {
cmd_up[i] = toupper(cmd[i]);
cmd_up[cmd_len] = 0;

ret = zend_hash_str_exists(Z_ARRVAL(ra->z_pure_cmds), cmd_up, cmd_len);
ret = zend_hash_str_exists(ra->pure_cmds, cmd_up, cmd_len);

efree(cmd_up);
return !ret;
Expand Down

0 comments on commit a56ed7f

Please sign in to comment.