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
914ee431
Commit
914ee431
authored
Nov 07, 2018
by
antirez
Browse files
RESP3: Double replies and aggregate lengths initial functions.
parent
51129857
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/networking.c
View file @
914ee431
...
...
@@ -469,16 +469,15 @@ void setDeferredMultiBulkLength(client *c, void *node, long length) {
/* Add a double as a bulk reply */
void
addReplyDouble
(
client
*
c
,
double
d
)
{
char
dbuf
[
128
],
sbuf
[
128
];
int
dlen
,
slen
;
if
(
isinf
(
d
))
{
/* Libc in odd systems (Hi Solaris!) will format infinite in a
* different way, so better to handle it in an explicit way. */
addReplyBulkCString
(
c
,
d
>
0
?
"inf"
:
"-inf"
);
addReplyString
(
c
,
d
>
0
?
",inf
\r\n
"
:
"-inf
\r\n
"
,
d
>
0
?
6
:
7
);
}
else
{
dlen
=
snprintf
(
dbuf
,
sizeof
(
dbuf
),
"%.17g"
,
d
)
;
s
len
=
snprintf
(
s
buf
,
sizeof
(
s
buf
),
"
$%d
\r\n
%s
\r\n
"
,
dlen
,
dbuf
);
addReplyString
(
c
,
s
buf
,
s
len
);
char
dbuf
[
MAX_LONG_DOUBLE_CHARS
+
3
]
;
int
d
len
=
snprintf
(
d
buf
,
sizeof
(
d
buf
),
"
,%.17g
\r\n
"
,
d
);
addReplyString
(
c
,
d
buf
,
d
len
);
}
}
...
...
@@ -486,9 +485,11 @@ void addReplyDouble(client *c, double d) {
* of the double instead of exposing the crude behavior of doubles to the
* dear user. */
void
addReplyHumanLongDouble
(
client
*
c
,
long
double
d
)
{
robj
*
o
=
createStringObjectFromLongDouble
(
d
,
1
);
addReplyBulk
(
c
,
o
);
decrRefCount
(
o
);
char
buf
[
MAX_LONG_DOUBLE_CHARS
];
int
len
=
ld2string
(
buf
,
sizeof
(
buf
),
d
,
1
);
addReplyString
(
c
,
","
,
1
);
addReplyString
(
c
,
buf
,
len
);
addReplyString
(
c
,
"
\r\n
"
,
2
);
}
/* Add a long long as integer reply or bulk len / multi bulk count.
...
...
@@ -524,11 +525,35 @@ void addReplyLongLong(client *c, long long ll) {
addReplyLongLongWithPrefix
(
c
,
ll
,
':'
);
}
void
addReply
MultiBulk
Len
(
client
*
c
,
long
length
)
{
if
(
length
<
OBJ_SHARED_BULKHDR_LEN
)
void
addReply
Aggregate
Len
(
client
*
c
,
long
length
,
int
prefix
)
{
if
(
prefix
==
'*'
&&
length
<
OBJ_SHARED_BULKHDR_LEN
)
addReply
(
c
,
shared
.
mbulkhdr
[
length
]);
else
addReplyLongLongWithPrefix
(
c
,
length
,
'*'
);
addReplyLongLongWithPrefix
(
c
,
length
,
prefix
);
}
void
addReplyArrayLen
(
client
*
c
,
long
length
)
{
addReplyAggregateLen
(
c
,
length
,
'*'
);
}
void
addReplyMapLen
(
client
*
c
,
long
length
)
{
addReplyAggregateLen
(
c
,
length
,
'%'
);
}
void
addReplySetLen
(
client
*
c
,
long
length
)
{
addReplyAggregateLen
(
c
,
length
,
'~'
);
}
void
addReplyAttributeLen
(
client
*
c
,
long
length
)
{
addReplyAggregateLen
(
c
,
length
,
'|'
);
}
void
addReplyPushLen
(
client
*
c
,
long
length
)
{
addReplyAggregateLen
(
c
,
length
,
'>'
);
}
void
addReplyHelloLen
(
client
*
c
,
long
length
)
{
addReplyAggregateLen
(
c
,
length
,
'@'
);
}
/* Create the length prefix of a bulk reply, example: $2234 */
...
...
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