#ifndef REDISDB_PARSER_H
#define REDISDB_PARSER_H
struct
rdbp_mblk_store {
AV* mblk_reply;
unsigned
long
mblk_len;
struct
rdbp_mblk_store *next;
};
struct
redisdb_parser {
int
utf8;
SV* master;
AV* callbacks;
SV* default_cb;
SV* buffer;
SV* error_class;
SV* error_class_constructor;
int
state;
int
mblk_level;
AV* mblk_reply;
struct
rdbp_mblk_store* mblk_store;
unsigned
long
mblk_len;
unsigned
long
bulk_len;
IV thx;
};
typedef
struct
redisdb_parser RDB_parser;
#define RDBP_CLEAN 0
#define RDBP_READ_LINE 1
#define RDBP_READ_ERROR 2
#define RDBP_READ_NUMBER 3
#define RDBP_READ_BULK_LEN 4
#define RDBP_READ_BULK 5
#define RDBP_READ_MBLK_LEN 6
#define RDBP_WAIT_BUCKS 7
RDB_parser* rdb_parser__init(SV *master, SV *eror_class,
int
utf8);
void
rdb_parser__free(RDB_parser *parser);
int
rdb_parser__parse_reply(RDB_parser *parser);
void
rdb_parser__propagate_reply(RDB_parser *parser, SV *reply);
#endif