Commit 727e1bab authored by Pieter Noordhuis's avatar Pieter Noordhuis
Browse files

Make redisReader struct public

parent fc790ebe
...@@ -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. */
......
...@@ -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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment