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
ea893c09
Commit
ea893c09
authored
Apr 21, 2011
by
Pieter Noordhuis
Browse files
Merge branch 'ardsrk-master'
parents
4feec1f2
e8460b5f
Changes
1
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
ea893c09
...
...
@@ -303,7 +303,41 @@ See the `adapters/` directory for bindings to *libev* and *libevent*.
## Reply parsing API
To be done.
Hiredis comes with a reply parsing API that makes it easy for writing higher
level language bindings.
The reply parsing API consists of the following functions:
redisReader *redisReaderCreate(void);
void redisReaderFree(redisReader *reader);
int redisReaderFeed(redisReader *reader, const char *buf, size_t len);
int redisReaderGetReply(redisReader *reader, void **reply);
### Usage
The function
`redisReaderCreate`
creates a
`redisReader`
structure that holds a
buffer with unparsed data and state for the protocol parser.
Incoming data -- most likely from a socket -- can be placed in the internal
buffer of the
`redisReader`
using
`redisReaderFeed`
. This function will make a
copy of the buffer pointed to by
`buf`
for
`len`
bytes. This data is parsed
when
`redisReaderGetReply`
is called. This function returns an integer status
and a reply object (as described above) via
`void **reply`
. The returned status
can be either
`REDIS_OK`
or
`REDIS_ERR`
, where the latter means something went
wrong (either a protocol error, or an out of memory error).
### Customizing replies
The function
`redisReaderGetReply`
creates
`redisReply`
and makes the function
argument
`reply`
point to the created
`redisReply`
variable. For instance, if
the response of type
`REDIS_REPLY_STATUS`
then the
`str`
field of
`redisReply`
will hold the status as a vanilla C string. However, the functions that are
responsible for creating instances of the
`redisReply`
can be customized by
setting the
`fn`
field on the
`redisReader`
struct. This should be done
immediately after creating the
`redisReader`
.
For example,
[
hiredis-rb
](
https://github.com/pietern/hiredis-rb/blob/master/ext/hiredis_ext/reader.c
)
uses customized reply object functions to create Ruby objects.
## AUTHORS
...
...
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