#ifndef RDBSERVER_REQUEST_H #define RDBSERVER_REQUEST_H #include #include #define INBUF_LEN 256 typedef enum rdb_read_result_t { read_result_success, read_result_error, read_result_pending, read_result_disconnected, } rdb_read_result_t; typedef enum rdb_read_state_t { read_state_header, read_state_body, read_state_body_escape, read_state_checksum_1, read_state_checksum_2, } rdb_read_state_t; typedef struct RdbRequest { int connfd; bool blocking; struct Buffer { char buf[INBUF_LEN]; size_t len; size_t index; } inbuf; rdb_read_state_t state; char *outbuf; size_t outbuflen; char chk; } RdbRequest; void rdb_request_init(RdbRequest *req, int connfd, char *buf, size_t buflen); void rdb_request_reset(RdbRequest *req); void rdb_request_set_blocking(RdbRequest *req, bool blocking); rdb_read_result_t rdb_request_read(RdbRequest *req, CommandBuf *cmd); #endif