Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
0e1684bc
Commit
0e1684bc
authored
Jun 11, 2010
by
Pieter Noordhuis
Browse files
move listTypeInsert to be grouped with other wrapper functions
parent
dedff272
Changes
1
Hide whitespace changes
Inline
Side-by-side
redis.c
View file @
0e1684bc
...
@@ -5088,6 +5088,31 @@ static robj *listTypeGet(listTypeEntry *entry) {
...
@@ -5088,6 +5088,31 @@ static robj *listTypeGet(listTypeEntry *entry) {
return
value
;
return
value
;
}
}
static
void
listTypeInsert
(
robj
*
subject
,
listTypeEntry
*
old_entry
,
robj
*
new_obj
,
int
where
)
{
listTypeTryConversion
(
subject
,
new_obj
);
if
(
subject
->
encoding
==
REDIS_ENCODING_ZIPLIST
)
{
if
(
where
==
REDIS_HEAD
)
{
unsigned
char
*
next
=
ziplistNext
(
subject
->
ptr
,
old_entry
->
zi
);
if
(
next
==
NULL
)
{
listTypePush
(
subject
,
new_obj
,
REDIS_TAIL
);
}
else
{
subject
->
ptr
=
ziplistInsert
(
subject
->
ptr
,
next
,
new_obj
->
ptr
,
sdslen
(
new_obj
->
ptr
));
}
}
else
{
subject
->
ptr
=
ziplistInsert
(
subject
->
ptr
,
old_entry
->
zi
,
new_obj
->
ptr
,
sdslen
(
new_obj
->
ptr
));
}
}
else
if
(
subject
->
encoding
==
REDIS_ENCODING_LIST
)
{
if
(
where
==
REDIS_HEAD
)
{
listInsertNode
(
subject
->
ptr
,
old_entry
->
ln
,
new_obj
,
1
);
}
else
{
listInsertNode
(
subject
->
ptr
,
old_entry
->
ln
,
new_obj
,
0
);
}
incrRefCount
(
new_obj
);
}
else
{
redisPanic
(
"Unknown list encoding"
);
}
}
/* Compare the given object with the entry at the current position. */
/* Compare the given object with the entry at the current position. */
static
int
listTypeEqual
(
listTypeEntry
*
entry
,
robj
*
o
)
{
static
int
listTypeEqual
(
listTypeEntry
*
entry
,
robj
*
o
)
{
listTypeIterator
*
li
=
entry
->
li
;
listTypeIterator
*
li
=
entry
->
li
;
...
@@ -5180,31 +5205,6 @@ static void rpushCommand(redisClient *c) {
...
@@ -5180,31 +5205,6 @@ static void rpushCommand(redisClient *c) {
pushGenericCommand
(
c
,
REDIS_TAIL
);
pushGenericCommand
(
c
,
REDIS_TAIL
);
}
}
static
void
listTypeInsert
(
robj
*
subject
,
listTypeEntry
*
old_entry
,
robj
*
new_obj
,
int
where
)
{
listTypeTryConversion
(
subject
,
new_obj
);
if
(
subject
->
encoding
==
REDIS_ENCODING_ZIPLIST
)
{
if
(
where
==
REDIS_HEAD
)
{
unsigned
char
*
next
=
ziplistNext
(
subject
->
ptr
,
old_entry
->
zi
);
if
(
next
==
NULL
)
{
listTypePush
(
subject
,
new_obj
,
REDIS_TAIL
);
}
else
{
subject
->
ptr
=
ziplistInsert
(
subject
->
ptr
,
next
,
new_obj
->
ptr
,
sdslen
(
new_obj
->
ptr
));
}
}
else
{
subject
->
ptr
=
ziplistInsert
(
subject
->
ptr
,
old_entry
->
zi
,
new_obj
->
ptr
,
sdslen
(
new_obj
->
ptr
));
}
}
else
if
(
subject
->
encoding
==
REDIS_ENCODING_LIST
)
{
if
(
where
==
REDIS_HEAD
)
{
listInsertNode
(
subject
->
ptr
,
old_entry
->
ln
,
new_obj
,
1
);
}
else
{
listInsertNode
(
subject
->
ptr
,
old_entry
->
ln
,
new_obj
,
0
);
}
incrRefCount
(
new_obj
);
}
else
{
redisPanic
(
"Unknown list encoding"
);
}
}
static
void
pushxGenericCommand
(
redisClient
*
c
,
int
where
,
robj
*
old_obj
,
robj
*
new_obj
)
{
static
void
pushxGenericCommand
(
redisClient
*
c
,
int
where
,
robj
*
old_obj
,
robj
*
new_obj
)
{
robj
*
subject
;
robj
*
subject
;
listTypeIterator
*
iter
;
listTypeIterator
*
iter
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment