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
hiredis
Commits
727e1bab
Commit
727e1bab
authored
Apr 21, 2011
by
Pieter Noordhuis
Browse files
Make redisReader struct public
parent
fc790ebe
Changes
2
Show whitespace changes
Inline
Side-by-side
hiredis.c
View file @
727e1bab
...
@@ -41,21 +41,6 @@
...
@@ -41,21 +41,6 @@
#include "sds.h"
#include "sds.h"
#include "util.h"
#include "util.h"
typedef
struct
redisReader
{
int
err
;
/* Error flags, 0 when there is no error */
char
errstr
[
128
];
/* String representation of error when applicable */
struct
redisReplyObjectFunctions
*
fn
;
void
*
reply
;
/* holds temporary reply */
sds
buf
;
/* read buffer */
size_t
pos
;
/* buffer cursor */
size_t
len
;
/* buffer length */
redisReadTask
rstack
[
3
];
/* stack of read tasks */
int
ridx
;
/* index of stack */
void
*
privdata
;
/* user-settable arbitrary field */
}
redisReader
;
static
redisReply
*
createReplyObject
(
int
type
);
static
redisReply
*
createReplyObject
(
int
type
);
static
void
*
createStringObject
(
const
redisReadTask
*
task
,
char
*
str
,
size_t
len
);
static
void
*
createStringObject
(
const
redisReadTask
*
task
,
char
*
str
,
size_t
len
);
static
void
*
createArrayObject
(
const
redisReadTask
*
task
,
int
elements
);
static
void
*
createArrayObject
(
const
redisReadTask
*
task
,
int
elements
);
...
@@ -542,7 +527,7 @@ static int processItem(redisReader *r) {
...
@@ -542,7 +527,7 @@ static int processItem(redisReader *r) {
}
}
}
}
void
*
redisReplyReaderCreate
(
void
)
{
redisReader
*
redisReplyReaderCreate
(
void
)
{
redisReader
*
r
=
calloc
(
sizeof
(
redisReader
),
1
);
redisReader
*
r
=
calloc
(
sizeof
(
redisReader
),
1
);
r
->
err
=
0
;
r
->
err
=
0
;
r
->
errstr
[
0
]
=
'\0'
;
r
->
errstr
[
0
]
=
'\0'
;
...
@@ -554,7 +539,7 @@ void *redisReplyReaderCreate(void) {
...
@@ -554,7 +539,7 @@ void *redisReplyReaderCreate(void) {
/* Set the function set to build the reply. Returns REDIS_OK when there
/* Set the function set to build the reply. Returns REDIS_OK when there
* is no temporary object and it can be set, REDIS_ERR otherwise. */
* is no temporary object and it can be set, REDIS_ERR otherwise. */
int
redisReplyReaderSetReplyObjectFunctions
(
void
*
reader
,
redisReplyObjectFunctions
*
fn
)
{
int
redisReplyReaderSetReplyObjectFunctions
(
redisReader
*
reader
,
redisReplyObjectFunctions
*
fn
)
{
redisReader
*
r
=
reader
;
redisReader
*
r
=
reader
;
if
(
r
->
reply
==
NULL
)
{
if
(
r
->
reply
==
NULL
)
{
r
->
fn
=
fn
;
r
->
fn
=
fn
;
...
@@ -565,7 +550,7 @@ int redisReplyReaderSetReplyObjectFunctions(void *reader, redisReplyObjectFuncti
...
@@ -565,7 +550,7 @@ int redisReplyReaderSetReplyObjectFunctions(void *reader, redisReplyObjectFuncti
/* Set the private data field that is used in the read tasks. This argument can
/* Set the private data field that is used in the read tasks. This argument can
* be used to curry arbitrary data to the custom reply object functions. */
* be used to curry arbitrary data to the custom reply object functions. */
int
redisReplyReaderSetPrivdata
(
void
*
reader
,
void
*
privdata
)
{
int
redisReplyReaderSetPrivdata
(
redisReader
*
reader
,
void
*
privdata
)
{
redisReader
*
r
=
reader
;
redisReader
*
r
=
reader
;
if
(
r
->
reply
==
NULL
)
{
if
(
r
->
reply
==
NULL
)
{
r
->
privdata
=
privdata
;
r
->
privdata
=
privdata
;
...
@@ -578,12 +563,12 @@ int redisReplyReaderSetPrivdata(void *reader, void *privdata) {
...
@@ -578,12 +563,12 @@ int redisReplyReaderSetPrivdata(void *reader, void *privdata) {
* variable while the reply is built up. When the reader contains an
* variable while the reply is built up. When the reader contains an
* object in between receiving some bytes to parse, this object might
* object in between receiving some bytes to parse, this object might
* otherwise be free'd by garbage collection. */
* otherwise be free'd by garbage collection. */
void
*
redisReplyReaderGetObject
(
void
*
reader
)
{
void
*
redisReplyReaderGetObject
(
redisReader
*
reader
)
{
redisReader
*
r
=
reader
;
redisReader
*
r
=
reader
;
return
r
->
reply
;
return
r
->
reply
;
}
}
void
redisReplyReaderFree
(
void
*
reader
)
{
void
redisReplyReaderFree
(
redisReader
*
reader
)
{
redisReader
*
r
=
reader
;
redisReader
*
r
=
reader
;
if
(
r
->
reply
!=
NULL
&&
r
->
fn
&&
r
->
fn
->
freeObject
)
if
(
r
->
reply
!=
NULL
&&
r
->
fn
&&
r
->
fn
->
freeObject
)
r
->
fn
->
freeObject
(
r
->
reply
);
r
->
fn
->
freeObject
(
r
->
reply
);
...
@@ -592,12 +577,12 @@ void redisReplyReaderFree(void *reader) {
...
@@ -592,12 +577,12 @@ void redisReplyReaderFree(void *reader) {
free
(
r
);
free
(
r
);
}
}
char
*
redisReplyReaderGetError
(
void
*
reader
)
{
char
*
redisReplyReaderGetError
(
redisReader
*
reader
)
{
redisReader
*
r
=
reader
;
redisReader
*
r
=
reader
;
return
r
->
errstr
;
return
r
->
errstr
;
}
}
void
redisReplyReaderFeed
(
void
*
reader
,
const
char
*
buf
,
size_t
len
)
{
void
redisReplyReaderFeed
(
redisReader
*
reader
,
const
char
*
buf
,
size_t
len
)
{
redisReader
*
r
=
reader
;
redisReader
*
r
=
reader
;
/* Copy the provided buffer. */
/* Copy the provided buffer. */
...
@@ -614,7 +599,7 @@ void redisReplyReaderFeed(void *reader, const char *buf, size_t len) {
...
@@ -614,7 +599,7 @@ void redisReplyReaderFeed(void *reader, const char *buf, size_t len) {
}
}
}
}
int
redisReplyReaderGetReply
(
void
*
reader
,
void
**
reply
)
{
int
redisReplyReaderGetReply
(
redisReader
*
reader
,
void
**
reply
)
{
redisReader
*
r
=
reader
;
redisReader
*
r
=
reader
;
/* Default target pointer to NULL. */
/* Default target pointer to NULL. */
...
...
hiredis.h
View file @
727e1bab
...
@@ -129,15 +129,31 @@ typedef struct redisContext {
...
@@ -129,15 +129,31 @@ typedef struct redisContext {
void
*
reader
;
void
*
reader
;
}
redisContext
;
}
redisContext
;
typedef
struct
redisReader
{
int
err
;
/* Error flags, 0 when there is no error */
char
errstr
[
128
];
/* String representation of error when applicable */
char
*
buf
;
/* Read buffer */
size_t
pos
;
/* Buffer cursor */
size_t
len
;
/* Buffer length */
redisReadTask
rstack
[
3
];
int
ridx
;
/* Index of current read task */
void
*
reply
;
/* Temporary reply pointer */
redisReplyObjectFunctions
*
fn
;
void
*
privdata
;
}
redisReader
;
void
freeReplyObject
(
void
*
reply
);
void
freeReplyObject
(
void
*
reply
);
void
*
redisReplyReaderCreate
(
void
);
redisReader
*
redisReplyReaderCreate
(
void
);
int
redisReplyReaderSetReplyObjectFunctions
(
void
*
reader
,
redisReplyObjectFunctions
*
fn
);
int
redisReplyReaderSetReplyObjectFunctions
(
redisReader
*
reader
,
redisReplyObjectFunctions
*
fn
);
int
redisReplyReaderSetPrivdata
(
void
*
reader
,
void
*
privdata
);
int
redisReplyReaderSetPrivdata
(
redisReader
*
reader
,
void
*
privdata
);
void
*
redisReplyReaderGetObject
(
void
*
reader
);
void
*
redisReplyReaderGetObject
(
redisReader
*
reader
);
char
*
redisReplyReaderGetError
(
void
*
reader
);
char
*
redisReplyReaderGetError
(
redisReader
*
reader
);
void
redisReplyReaderFree
(
void
*
ptr
);
void
redisReplyReaderFree
(
redisReader
*
ptr
);
void
redisReplyReaderFeed
(
void
*
reader
,
const
char
*
buf
,
size_t
len
);
void
redisReplyReaderFeed
(
redisReader
*
reader
,
const
char
*
buf
,
size_t
len
);
int
redisReplyReaderGetReply
(
void
*
reader
,
void
**
reply
);
int
redisReplyReaderGetReply
(
redisReader
*
reader
,
void
**
reply
);
/* Functions to format a command according to the protocol. */
/* Functions to format a command according to the protocol. */
int
redisvFormatCommand
(
char
**
target
,
const
char
*
format
,
va_list
ap
);
int
redisvFormatCommand
(
char
**
target
,
const
char
*
format
,
va_list
ap
);
...
...
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