#include <event.h>
Go to the source code of this file.
Data Structures | |
| struct | evhttp_request |
| the request structure that a server receives. More... | |
Defines | |
| #define | EVHTTP_PROXY_REQUEST 0x0002 |
| #define | EVHTTP_REQ_OWN_CONNECTION 0x0001 |
| #define | HTTP_BADREQUEST 400 |
| #define | HTTP_MOVEPERM 301 |
| #define | HTTP_MOVETEMP 302 |
| #define | HTTP_NOCONTENT 204 |
| #define | HTTP_NOTFOUND 404 |
| #define | HTTP_NOTMODIFIED 304 |
| #define | HTTP_OK 200 |
| #define | HTTP_SERVUNAVAIL 503 |
Enumerations | |
| enum | evhttp_cmd_type { EVHTTP_REQ_GET, EVHTTP_REQ_POST, EVHTTP_REQ_HEAD } |
| enum | evhttp_request_kind { EVHTTP_REQUEST, EVHTTP_RESPONSE } |
Functions | |
| int | evhttp_accept_socket (struct evhttp *http, int fd) |
| Makes an HTTP server accept connections on the specified socket. | |
| int | evhttp_add_header (struct evkeyvalq *, const char *, const char *) |
| int | evhttp_bind_socket (struct evhttp *http, const char *address, u_short port) |
| Binds an HTTP server on the specified address and port. | |
| void | evhttp_clear_headers (struct evkeyvalq *) |
| void | evhttp_connection_free (struct evhttp_connection *evcon) |
| Frees an http connection. | |
| void | evhttp_connection_get_peer (struct evhttp_connection *evcon, char **address, u_short *port) |
| Get the remote address and port associated with this connection. | |
| struct evhttp_connection * | evhttp_connection_new (const char *address, unsigned short port) |
| A connection object that can be used to for making HTTP requests. | |
| void | evhttp_connection_set_base (struct evhttp_connection *evcon, struct event_base *base) |
| Associates an event base with the connection - can only be called on a freshly created connection object that has not been used yet. | |
| void | evhttp_connection_set_closecb (struct evhttp_connection *evcon, void(*)(struct evhttp_connection *, void *), void *) |
| Set a callback for connection close. | |
| void | evhttp_connection_set_local_address (struct evhttp_connection *evcon, const char *address) |
| sets the ip address from which http connections are made | |
| void | evhttp_connection_set_local_port (struct evhttp_connection *evcon, unsigned short port) |
| sets the local port from which http connections are made | |
| void | evhttp_connection_set_retries (struct evhttp_connection *evcon, int retry_max) |
| Sets the retry limit for this connection - -1 repeats indefnitely. | |
| void | evhttp_connection_set_timeout (struct evhttp_connection *evcon, int timeout_in_secs) |
| Sets the timeout for events related to this connection. | |
| char * | evhttp_decode_uri (const char *uri) |
| Helper function to decode a URI. | |
| int | evhttp_del_cb (struct evhttp *, const char *) |
| Removes the callback for a specified URI. | |
| char * | evhttp_encode_uri (const char *uri) |
| Helper function to encode a URI. | |
| const char * | evhttp_find_header (const struct evkeyvalq *, const char *) |
| void | evhttp_free (struct evhttp *http) |
| Free the previously created HTTP server. | |
| char * | evhttp_htmlescape (const char *html) |
| Escape HTML character entities in a string. | |
| int | evhttp_make_request (struct evhttp_connection *evcon, struct evhttp_request *req, enum evhttp_cmd_type type, const char *uri) |
| The connection gets ownership of the request. | |
| struct evhttp * | evhttp_new (struct event_base *base) |
| Create a new HTTP server. | |
| void | evhttp_parse_query (const char *uri, struct evkeyvalq *) |
| Helper function to parse out arguments in a query. | |
| int | evhttp_remove_header (struct evkeyvalq *, const char *) |
| void | evhttp_request_free (struct evhttp_request *req) |
| Frees the request object and removes associated events. | |
| struct evhttp_request * | evhttp_request_new (void(*cb)(struct evhttp_request *, void *), void *arg) |
| Creates a new request object that needs to be filled in with the request parameters. | |
| void | evhttp_request_set_chunked_cb (struct evhttp_request *, void(*cb)(struct evhttp_request *, void *)) |
| enable delivery of chunks to requestor | |
| const char * | evhttp_request_uri (struct evhttp_request *req) |
| void | evhttp_send_error (struct evhttp_request *req, int error, const char *reason) |
| Send an HTML error message to the client. | |
| void | evhttp_send_reply (struct evhttp_request *req, int code, const char *reason, struct evbuffer *databuf) |
| Send an HTML reply to the client. | |
| void | evhttp_send_reply_chunk (struct evhttp_request *, struct evbuffer *) |
| void | evhttp_send_reply_end (struct evhttp_request *) |
| void | evhttp_send_reply_start (struct evhttp_request *, int, const char *) |
| void | evhttp_set_cb (struct evhttp *, const char *, void(*)(struct evhttp_request *, void *), void *) |
| Set a callback for a specified URI. | |
| void | evhttp_set_gencb (struct evhttp *, void(*)(struct evhttp_request *, void *), void *) |
| Set a callback for all requests that are not caught by specific callbacks. | |
| void | evhttp_set_timeout (struct evhttp *, int timeout_in_secs) |
| Set the timeout for an HTTP request. | |
| struct evhttp * | evhttp_start (const char *address, u_short port) |
| Start an HTTP server on the specified address and port. | |
As libevent is a library for dealing with event notification and most interesting applications are networked today, I have often found the need to write HTTP code. The following prototypes and definitions provide an application with a minimal interface for making HTTP requests and for creating a very simple HTTP server.
| int evhttp_accept_socket | ( | struct evhttp * | http, | |
| int | fd | |||
| ) |
Makes an HTTP server accept connections on the specified socket.
This may be useful to create a socket and then fork multiple instances of an http server, or when a socket has been communicated via file descriptor passing in situations where an http servers does not have permissions to bind to a low-numbered port.
Can be called multiple times to have the http server listen to multiple different sockets.
| http | a pointer to an evhttp object | |
| fd | a socket fd that is ready for accepting connections |
| int evhttp_bind_socket | ( | struct evhttp * | http, | |
| const char * | address, | |||
| u_short | port | |||
| ) |
Binds an HTTP server on the specified address and port.
Can be called multiple times to bind the same http server to multiple different ports.
| http | a pointer to an evhttp object | |
| address | a string containing the IP address to listen(2) on | |
| port | the port number to listen on |
| void evhttp_connection_get_peer | ( | struct evhttp_connection * | evcon, | |
| char ** | address, | |||
| u_short * | port | |||
| ) |
Get the remote address and port associated with this connection.
| struct evhttp_connection* evhttp_connection_new | ( | const char * | address, | |
| unsigned short | port | |||
| ) | [read] |
A connection object that can be used to for making HTTP requests.
The connection object tries to establish the connection when it is given an http request object.
| void evhttp_connection_set_closecb | ( | struct evhttp_connection * | evcon, | |
| void(*)(struct evhttp_connection *, void *) | , | |||
| void * | ||||
| ) |
Set a callback for connection close.
| char* evhttp_decode_uri | ( | const char * | uri | ) |
Helper function to decode a URI.
The returned string must be freed by the caller.
| uri | an encoded URI |
| char* evhttp_encode_uri | ( | const char * | uri | ) |
Helper function to encode a URI.
The returned string must be freed by the caller.
| uri | an unencoded URI |
| void evhttp_free | ( | struct evhttp * | http | ) |
Free the previously created HTTP server.
Works only if no requests are currently being served.
| http | the evhttp server object to be freed |
| char* evhttp_htmlescape | ( | const char * | html | ) |
Escape HTML character entities in a string.
Replaces <, >, ", ' and & with <, >, ", ' and & correspondingly.
The returned string needs to be freed by the caller.
| html | an unescaped HTML string |
| struct evhttp* evhttp_new | ( | struct event_base * | base | ) | [read] |
Create a new HTTP server.
| base | (optional) the event base to receive the HTTP events |
| void evhttp_parse_query | ( | const char * | uri, | |
| struct evkeyvalq * | ||||
| ) |
Helper function to parse out arguments in a query.
The arguments are separated by key and value. URI should already be decoded.
| void evhttp_request_free | ( | struct evhttp_request * | req | ) |
Frees the request object and removes associated events.
| struct evhttp_request* evhttp_request_new | ( | void(*)(struct evhttp_request *, void *) | cb, | |
| void * | arg | |||
| ) | [read] |
Creates a new request object that needs to be filled in with the request parameters.
The callback is executed when the request completed or an error occurred.
| void evhttp_send_error | ( | struct evhttp_request * | req, | |
| int | error, | |||
| const char * | reason | |||
| ) |
Send an HTML error message to the client.
| req | a request object | |
| error | the HTTP error code | |
| reason | a brief explanation of the error |
| void evhttp_send_reply | ( | struct evhttp_request * | req, | |
| int | code, | |||
| const char * | reason, | |||
| struct evbuffer * | databuf | |||
| ) |
Send an HTML reply to the client.
| req | a request object | |
| code | the HTTP response code to send | |
| reason | a brief message to send with the response code | |
| databuf | the body of the response |
| void evhttp_set_timeout | ( | struct evhttp * | , | |
| int | timeout_in_secs | |||
| ) |
Set the timeout for an HTTP request.
| http | an evhttp object | |
| timeout_in_secs | the timeout, in seconds |
| struct evhttp* evhttp_start | ( | const char * | address, | |
| u_short | port | |||
| ) | [read] |
Start an HTTP server on the specified address and port.
DEPRECATED: it does not allow an event base to be specified
| address | the address to which the HTTP server should be bound | |
| port | the port number on which the HTTP server should listen |
1.5.7