Example #1
0
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;
}
Example #2
0
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;
    }
}