src/ebb.h in ebb-0.1.0 vs src/ebb.h in ebb-0.2.0

- old
+ new

@@ -11,13 +11,13 @@ #include <glib.h> #include "parser.h" typedef struct ebb_server ebb_server; typedef struct ebb_client ebb_client; -#define EBB_VERSION "0.1.0" +#define EBB_VERSION "0.2.0" #define EBB_BUFFERSIZE (1024 * (80 + 33)) -#define EBB_MAX_CLIENTS 200 +#define EBB_MAX_CLIENTS 1024 #define EBB_TIMEOUT 30.0 #define EBB_MAX_ENV 500 #define EBB_TCP_COMMON \ unsigned open : 1; \ int fd; \ @@ -26,59 +26,47 @@ /*** Ebb Client ***/ void ebb_client_close(ebb_client*); /* user MUST call this function on each client passed by the request_cb */ void ebb_client_release(ebb_client*); int ebb_client_read(ebb_client *client, char *buffer, int length); -void ebb_client_write_status(ebb_client*, int status, const char *human_status); +void ebb_client_write_status(ebb_client*, int status, const char *reason_phrase); void ebb_client_write_header(ebb_client*, const char *field, const char *value); -void ebb_client_write(ebb_client*, const char *data, int length); -void ebb_client_begin_transmission( ebb_client *client); +void ebb_client_write_body(ebb_client*, const char *data, int length); +/* int ebb_client_should_keep_alive(ebb_client*); */ struct ebb_env_item { - enum { EBB_FIELD_VALUE_PAIR - , EBB_REQUEST_METHOD - , EBB_REQUEST_URI - , EBB_FRAGMENT - , EBB_REQUEST_PATH - , EBB_QUERY_STRING - , EBB_HTTP_VERSION - , EBB_SERVER_PORT - , EBB_CONTENT_LENGTH - } type; - const char *field; - int field_length; - const char *value; - int value_length; + int type; + const char *field; + int field_length; + const char *value; + int value_length; }; struct ebb_client { EBB_TCP_COMMON - + char *ip; unsigned int in_use : 1; ebb_server *server; http_parser parser; char *request_buffer; ev_io read_watcher; - size_t read, nread_from_body; + size_t read; - char upload_file_filename[200]; - FILE *upload_file; + char *body_head; + size_t body_head_len; - int content_length; - ev_io write_watcher; GString *response_buffer; size_t written; ev_timer timeout_watcher; - + unsigned int keep_alive : 1; unsigned int status_written : 1; unsigned int headers_written : 1; unsigned int body_written : 1; - unsigned int began_transmission : 1; /* the ENV structure */ int env_size; struct ebb_env_item env[EBB_MAX_ENV]; }; @@ -92,13 +80,15 @@ void ebb_server_init( ebb_server *server , struct ev_loop *loop , ebb_request_cb request_cb , void *request_cb_data ); +int ebb_server_listen_on_fd(ebb_server*, const int sfd); int ebb_server_listen_on_port(ebb_server*, const int port); -int ebb_server_listen_on_socket(ebb_server*, const char *socketpath); +int ebb_server_listen_on_unix_socket(ebb_server*, const char *socketpath); void ebb_server_unlisten(ebb_server*); +int ebb_server_clients_in_use_p(ebb_server*); struct ebb_server { EBB_TCP_COMMON char *port; char *socketpath; @@ -107,6 +97,6 @@ struct ev_loop *loop; void *request_cb_data; ebb_request_cb request_cb; }; -#endif \ No newline at end of file +#endif