43 lines
		
	
	
		
			970 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			970 B
		
	
	
	
		
			C
		
	
	
	
| #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;
 | |
|     bool blocking;
 | |
|     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);
 | |
| void rdb_request_set_blocking(RdbRequest *req, bool blocking);
 | |
| rdb_read_result_t rdb_request_read(RdbRequest *req, size_t *len);
 | |
| 
 | |
| #endif |