Rename 'parent' field in read tasks to 'obj'

This commit is contained in:
Pieter Noordhuis 2010-11-26 13:04:42 +01:00
parent b4dd17b57f
commit adb0895e99
2 changed files with 11 additions and 9 deletions

View File

@ -112,7 +112,7 @@ static void *createStringObject(const redisReadTask *task, char *str, size_t len
r->len = len; r->len = len;
if (task->parent) { if (task->parent) {
redisReply *parent = task->parent; redisReply *parent = task->parent->obj;
assert(parent->type == REDIS_REPLY_ARRAY); assert(parent->type == REDIS_REPLY_ARRAY);
parent->element[task->idx] = r; parent->element[task->idx] = r;
} }
@ -125,7 +125,7 @@ static void *createArrayObject(const redisReadTask *task, int elements) {
if ((r->element = calloc(sizeof(redisReply*),elements)) == NULL) if ((r->element = calloc(sizeof(redisReply*),elements)) == NULL)
redisOOM(); redisOOM();
if (task->parent) { if (task->parent) {
redisReply *parent = task->parent; redisReply *parent = task->parent->obj;
assert(parent->type == REDIS_REPLY_ARRAY); assert(parent->type == REDIS_REPLY_ARRAY);
parent->element[task->idx] = r; parent->element[task->idx] = r;
} }
@ -136,7 +136,7 @@ static void *createIntegerObject(const redisReadTask *task, long long value) {
redisReply *r = createReplyObject(REDIS_REPLY_INTEGER); redisReply *r = createReplyObject(REDIS_REPLY_INTEGER);
r->integer = value; r->integer = value;
if (task->parent) { if (task->parent) {
redisReply *parent = task->parent; redisReply *parent = task->parent->obj;
assert(parent->type == REDIS_REPLY_ARRAY); assert(parent->type == REDIS_REPLY_ARRAY);
parent->element[task->idx] = r; parent->element[task->idx] = r;
} }
@ -146,7 +146,7 @@ static void *createIntegerObject(const redisReadTask *task, long long value) {
static void *createNilObject(const redisReadTask *task) { static void *createNilObject(const redisReadTask *task) {
redisReply *r = createReplyObject(REDIS_REPLY_NIL); redisReply *r = createReplyObject(REDIS_REPLY_NIL);
if (task->parent) { if (task->parent) {
redisReply *parent = task->parent; redisReply *parent = task->parent->obj;
assert(parent->type == REDIS_REPLY_ARRAY); assert(parent->type == REDIS_REPLY_ARRAY);
parent->element[task->idx] = r; parent->element[task->idx] = r;
} }
@ -316,12 +316,13 @@ static int processMultiBulkItem(redisReader *r) {
/* Modify task stack when there are more than 0 elements. */ /* Modify task stack when there are more than 0 elements. */
if (elements > 0) { if (elements > 0) {
cur->elements = elements; cur->elements = elements;
cur->obj = obj;
r->ridx++; r->ridx++;
r->rstack[r->ridx].type = -1; r->rstack[r->ridx].type = -1;
r->rstack[r->ridx].elements = -1; r->rstack[r->ridx].elements = -1;
r->rstack[r->ridx].parent = obj;
r->rstack[r->ridx].parentTask = cur;
r->rstack[r->ridx].idx = 0; r->rstack[r->ridx].idx = 0;
r->rstack[r->ridx].obj = NULL;
r->rstack[r->ridx].parent = cur;
r->rstack[r->ridx].privdata = r->privdata; r->rstack[r->ridx].privdata = r->privdata;
} else { } else {
moveToNextTask(r); moveToNextTask(r);
@ -478,8 +479,9 @@ int redisReplyReaderGetReply(void *reader, void **reply) {
if (r->ridx == -1) { if (r->ridx == -1) {
r->rstack[0].type = -1; r->rstack[0].type = -1;
r->rstack[0].elements = -1; r->rstack[0].elements = -1;
r->rstack[0].parent = r->rstack[0].parentTask = NULL;
r->rstack[0].idx = -1; r->rstack[0].idx = -1;
r->rstack[0].obj = NULL;
r->rstack[0].parent = NULL;
r->rstack[0].privdata = r->privdata; r->rstack[0].privdata = r->privdata;
r->ridx = 0; r->ridx = 0;
} }

View File

@ -86,9 +86,9 @@ typedef struct redisReply {
typedef struct redisReadTask { typedef struct redisReadTask {
int type; int type;
int elements; /* number of elements in multibulk container */ int elements; /* number of elements in multibulk container */
void *parent; /* optional pointer to parent object */
int idx; /* index in parent (array) object */ int idx; /* index in parent (array) object */
struct redisReadTask *parentTask; /* pointer to parent task */ void *obj; /* holds user-generated value for a read task */
struct redisReadTask *parent; /* parent task */
void *privdata; /* user-settable arbitrary field */ void *privdata; /* user-settable arbitrary field */
} redisReadTask; } redisReadTask;