00001
00002
00003
00004
00005 #if !defined(_INCLUDED_SUL_HTTPD_H_HEADER__)
00006 #define _INCLUDED_SUL_HTTPD_H_HEADER__
00007
00014 typedef enum min_req_url_code_e
00015 {
00016 URL_BAD_REQUEST,
00017 URL_NOT_FOUND,
00018 URL_OK
00019 } min_req_url_code_e;
00020
00024 typedef enum
00025 {
00027 MINI_RT_UNKNOWN = 0,
00028
00030 MINI_RT_HTTP_POST = 1,
00031
00033 MINI_RT_HTTP_GET = 2
00034 } min_req_type_t;
00035
00039 typedef struct mini_httpd_t mini_httpd_t;
00040
00044 typedef struct mini_req_t mini_req_t;
00045
00049 typedef struct mini_hook_t mini_hook_t;
00050
00057 typedef sul_error_t *(*mini_handler_fnptr_t)(mini_req_t *req, apr_pool_t *pool);
00058
00064 typedef sul_boolean_t (*mini_access_fnptr_t)(mini_req_t *req, apr_pool_t *pool);
00065
00074 SUL_DECLARE(sul_error_t *)
00075 mini_httpd_create(mini_httpd_t **self, short port, apr_pool_t *pool);
00076
00077 SUL_DECLARE(sul_error_t *)
00078 mini_httpd_listen(mini_httpd_t *httpd, apr_pool_t *pool);
00079
00092 SUL_DECLARE(sul_error_t *)
00093 mini_httpd_add_hook(mini_httpd_t *self, const char *url,
00094 mini_handler_fnptr_t fnptr, void *param,
00095 apr_pool_t *pool);
00096
00097 SUL_DECLARE(sul_error_t *)
00098 mini_httpd_add_hook_re(mini_httpd_t *self, const char *url,
00099 mini_handler_fnptr_t fnptr, void *param,
00100 apr_pool_t *pool);
00101
00110 SUL_DECLARE(sul_error_t *)
00111 mini_httpd_tick(mini_httpd_t *self, apr_pool_t *pool);
00112
00113 SUL_DECLARE(sul_error_t *)
00114 mini_httpd_handle(mini_httpd_t *self, apr_socket_t *req_sock,
00115 apr_pool_t *pool);
00116
00121 SUL_DECLARE(void)
00122 mini_httpd_max_size_set(mini_httpd_t *self, apr_size_t size);
00123
00134 SUL_DECLARE(sul_error_t *)
00135 mini_req_create(mini_req_t **self, mini_httpd_t *httpd,
00136 apr_socket_t *sock, apr_pool_t *pool);
00137
00145 SUL_DECLARE(sul_error_t *)
00146 mini_httpd_set_access_fn(mini_httpd_t *self, mini_access_fnptr_t fn);
00147
00154 SUL_DECLARE(sul_error_t *)
00155 mini_req_headers_read(mini_req_t *req);
00156
00163 SUL_DECLARE(sul_error_t *)
00164 mini_req_process(mini_req_t *req);
00165
00172 SUL_DECLARE(sul_error_t *)
00173 mini_req_headers_write(mini_req_t *req);
00174
00182 SUL_DECLARE(sul_error_t *)
00183 mini_req_write(mini_req_t *req, const char *ptr);
00184
00192 SUL_DECLARE(sul_error_t *)
00193 mini_req_printf(mini_req_t *req, const char *ptr, ...);
00194
00199 SUL_DECLARE(void *)
00200 mini_req_hook_param_get(mini_req_t *req);
00201
00206 SUL_DECLARE(apr_table_t *)
00207 mini_req_params(mini_req_t *req);
00208
00213 SUL_DECLARE(char *)
00214 mini_req_query_get(mini_req_t *req);
00215
00220 SUL_DECLARE(void *)
00221 mini_req_param_get(mini_req_t *req);
00222
00227 SUL_DECLARE(void)
00228 mini_httpd_param_set(mini_httpd_t *self, void *value);
00229
00234 SUL_DECLARE(char *)
00235 mini_req_local_ip(mini_req_t *req);
00236
00241 SUL_DECLARE(char *)
00242 mini_req_remote_ip(mini_req_t *req);
00243
00252 SUL_DECLARE(sul_boolean_t)
00253 mini_req_get_package(mini_req_t *req, const char **pkg, apr_size_t *sz);
00254
00255 typedef struct sul_httpd_req_t
00256 {
00257 apr_pool_t *pool;
00258 apr_sockaddr_t *remote_sa;
00259 apr_socket_t *sock;
00260 char *ip;
00261 short port;
00262 char *url;
00263 apr_ssize_t p_len;
00264 char *p_pkg;
00265 sul_stringbuf_t *res;
00266 sul_stream_t *stream;
00267 sul_boolean_t overflow;
00268 apr_size_t max_size;
00269 } sul_httpd_req_t;
00270
00281 SUL_DECLARE(sul_error_t *)
00282 sul_httpd_req_create(sul_httpd_req_t **req, const char *ip, short port, const char *url, apr_pool_t *pool);
00283
00291 SUL_DECLARE(sul_error_t *)
00292 sul_httpd_req_send(sul_httpd_req_t *req, const char *str);
00293
00303 SUL_DECLARE(sul_error_t *)
00304 sul_httpd_req_open(sul_httpd_req_t *req, sul_boolean_t cfail, apr_status_t *state, apr_ssize_t secs);
00305
00312 SUL_DECLARE(sul_error_t *)
00313 sul_httpd_req_retrieve(sul_httpd_req_t *req);
00314
00321 SUL_DECLARE(sul_error_t *)
00322 sul_httpd_req_close(sul_httpd_req_t *req);
00323
00329 SUL_DECLARE(apr_ssize_t)
00330 sul_unescape_url(char *url);
00331
00334 #endif