5.1. http_server
— HTTP server¶
Source code: src/inet/http_server.h, src/inet/http_server.c
Test code: tst/inet/http_server/main.c
Test coverage: src/inet/http_server.c
Typedefs
- typedef
Enums
-
enum type
http_server_request_action_t
¶ Values:
- = 0
- = 1
-
enum type
http_server_content_type_t
¶ Content type.
Values:
- = 0
- = 1
-
enum type
http_server_response_code_t
¶ Response codes.
Values:
- = 200
- = 404
-
enum type
http_server_connection_state_t
¶ Connection state.
Values:
- = 0
Functions
-
int
http_server_init
(struct http_server_t *self_p, struct http_server_listener_t *listener_p, struct http_server_connection_t *connections_p, const char *root_path_p, const struct http_server_route_t *routes_p, http_server_route_callback_t on_no_route)¶ Initialize given http server with given root path and maximum number of clients.
- Return
- zero(0) or negative error code.
- Parameters
self_p
: Http server to initialize.listener_p
: Listener.connections_p
: A NULL terminated list of connections.root_path_p
: Working directory for the connection threads.routes_p
: An array of routes.on_no_route
: Callback called for all requests without a matching route in route_p.
-
int
http_server_start
(struct http_server_t *self_p)¶ Start given HTTP server.
Spawn the threads and start listening for connections.
- Return
- zero(0) or negative error code.
- Parameters
self_p
: Http server.
-
int
http_server_stop
(struct http_server_t *self_p)¶ Stop given HTTP server.
Closes the listener and all open connections, and then kills the threads.
- Return
- zero(0) or negative error code.
- Parameters
self_p
: Http server.
-
int
http_server_response_write
(struct http_server_connection_t *connection_p, struct http_server_request_t *request_p, struct http_server_response_t *response_p)¶ Write given HTTP response to given connected client. This function should only be called from the route callbacks to respond to given request.
- Return
- zero(0) or negative error code.
- Parameters
connection_p
: Current connection.request_p
: Current request.response_p
: Current response. Ifbuf_p
in the response to NULL this function will only write the HTTP header, including the size, to the socket. After this function returns write the payload by callingsocket_write()
.
- struct
- #include <http_server.h>
HTTP request.
Public Members
-
http_server_request_action_t
http_server_request_t::
action
¶
-
char
http_server_request_t::
path
[64]¶
-
int
http_server_request_t::
present
¶
-
char
http_server_request_t::
value
[64]¶
-
struct http_server_request_t::@36::@37 http_server_request_t::sec_websocket_key
-
struct http_server_request_t::@36::@38 http_server_request_t::content_type
-
long
http_server_request_t::
value
¶
-
struct http_server_request_t::@36::@39 http_server_request_t::content_length
-
struct http_server_request_t::@36::@40 http_server_request_t::authorization
-
struct http_server_request_t::@36 http_server_request_t::headers
-
http_server_request_action_t
- struct
- #include <http_server.h>
HTTP response.
Public Members
-
int
http_server_response_t::
type
¶
-
http_server_response_code_t
http_server_response_t::
code
¶
-
const char *
http_server_response_t::
buf_p
¶
-
size_t
http_server_response_t::
size
¶
-
struct http_server_response_t::@41 http_server_response_t::content
-
int
- struct
Public Members
-
const char *
http_server_listener_t::
address_p
¶
-
int
http_server_listener_t::
port
¶
-
const char *
http_server_listener_t::
name_p
¶
-
void *
http_server_listener_t::
buf_p
¶
-
size_t
http_server_listener_t::
size
¶
-
struct http_server_listener_t::@42::@43 http_server_listener_t::stack
-
struct http_server_listener_t::@42 http_server_listener_t::thrd
-
const char *
- struct
Public Members
-
http_server_connection_state_t
http_server_connection_t::
state
¶
-
const char *
http_server_connection_t::
name_p
¶
-
void *
http_server_connection_t::
buf_p
¶
-
size_t
http_server_connection_t::
size
¶
-
struct http_server_connection_t::@44::@45 http_server_connection_t::stack
-
struct http_server_connection_t::@44 http_server_connection_t::thrd
-
struct http_server_t *
http_server_connection_t::
self_p
¶
-
http_server_connection_state_t
- struct
- #include <http_server.h>
Call given callback for given path.
Public Members
-
const char *
http_server_route_t::
path_p
¶
-
http_server_route_callback_t
http_server_route_t::
callback
¶
-
const char *
- struct
Public Members
-
const char *
http_server_t::
root_path_p
¶
-
const struct http_server_route_t *
http_server_t::
routes_p
¶
-
http_server_route_callback_t
http_server_t::
on_no_route
¶
-
struct http_server_listener_t *
http_server_t::
listener_p
¶
-
struct http_server_connection_t *
http_server_t::
connections_p
¶
-
const char *