int getGenericCommand(redisClient *c) { c->returncode = REDIS_ERR; robj *o; if ((o = lookupKeyReadWithVersion(c->db,c->argv[1],&(c->version))) == NULL) { c->returncode = REDIS_OK_NOT_EXIST; return REDIS_OK; } if (o->type != REDIS_STRING) { c->returncode = REDIS_ERR_WRONG_TYPE_ERROR; return REDIS_ERR; } else { value_item_list* vlist = createValueItemList(); if(vlist == NULL) { c->returncode = REDIS_ERR_MEMORY_ALLOCATE_ERROR; return REDIS_ERR; } if (o->encoding == REDIS_ENCODING_INT) { rpushLongLongValueItemNode(vlist, (long)o->ptr); } else { rpushValueItemNode(vlist, o); incrRefCount(o); } c->return_value = (void*)vlist; c->returncode = REDIS_OK; return REDIS_OK; } //never step here return REDIS_OK; }
void typeCommand(redisClient *c) { robj *o = lookupKeyReadWithVersion(c->db,c->argv[1], &(c->version)); if (o == NULL) { c->retvalue.llnum = REDIS_NONE; c->returncode = REDIS_OK_NOT_EXIST; } else { switch(o->type) { case REDIS_STRING: c->retvalue.llnum = REDIS_STRING; break; case REDIS_LIST: c->retvalue.llnum = REDIS_LIST; break; case REDIS_SET: c->retvalue.llnum = REDIS_SET; break; case REDIS_ZSET: c->retvalue.llnum = REDIS_ZSET; break; case REDIS_HASH: c->retvalue.llnum = REDIS_HASH; break; default: c->retvalue.llnum = REDIS_UNKNOWN; break; } c->returncode = REDIS_OK; } }