Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
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
Hide 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