2024-10-07 04:55:44 +00:00
|
|
|
#ifndef RDBSERVER_REQUEST_H
|
|
|
|
#define RDBSERVER_REQUEST_H
|
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
#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;
|
2024-10-08 01:20:01 +00:00
|
|
|
bool blocking;
|
2024-10-07 04:55:44 +00:00
|
|
|
struct Buffer {
|
|
|
|
char buf[INBUF_LEN];
|
|
|
|
size_t len;
|
|
|
|
size_t index;
|
|
|
|
} inbuf;
|
|
|
|
rdb_read_state_t state;
|
|
|
|
char *cmd;
|
|
|
|
size_t cmdlen;
|
|
|
|
size_t outlen;
|
|
|
|
char chk;
|
|
|
|
} RdbRequest;
|
|
|
|
|
|
|
|
void rdb_request_init(RdbRequest *req, int connfd, char *cmd, size_t cmdlen);
|
|
|
|
void rdb_request_reset(RdbRequest *req);
|
2024-10-08 01:20:01 +00:00
|
|
|
void rdb_request_set_blocking(RdbRequest *req, bool blocking);
|
2024-10-07 04:55:44 +00:00
|
|
|
rdb_read_result_t rdb_request_read(RdbRequest *req, size_t *len);
|
|
|
|
|
|
|
|
#endif
|