|
football
socket abstraction layer
|
Football private declarations. More...
#include <config.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <time.h>#include <stdbool.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include "fb_public.h"#include "fb_transport.h"Go to the source code of this file.
Data Structures | |
| union | fb_socketaddr_t |
| Address of opposing end of a connection. More... | |
| struct | fb_service_t |
| Football service state structure. More... | |
| struct | fb_message_t |
| Message structure. More... | |
| struct | fb_messagelist_t |
| Q list structure. More... | |
| struct | fb_ioqueue_t |
| Queue structure. More... | |
| struct | fb_inputbuffer_t |
| Connection input structure. More... | |
| struct | fb_http_request_t |
| Structure which collects HTTP request information as it is read. More... | |
| struct | fb_connection_t |
| Connection state information. More... | |
| struct | fb_iterator_t |
| Iterator for connections on a football service. More... | |
Macros | |
| #define | FB_WHERE(level) __FILE__, __LINE__, __func__, (level) |
| Use FB_WHERE to send the log type; this macro includes the file, line and function when NDEBUG is not set. | |
| #define | fb_perror(errfunc) fb_log(FB_WHERE (FB_LOG_ERROR), (errfunc ": %s"), strerror (errno)) |
| Log a message with a form akin to perror. | |
| #define | fb_mutex_init(mutex) ((void)0) |
| #define | fb_mutex_destroy(mutex) ((void)0) |
| #define | fb_mutex_lock(mutex) ((void)0) |
| #define | fb_mutex_unlock(mutex) ((void)0) |
| #define | fb_http_socket(id) |
| #define | fb_ip6_socket(id) |
| #define | fb_encrypted_socket(id) ((id) == FB_SOCKET_HTTPS_IP4 || (id) == FB_SOCKET_HTTPS_IP6) |
| #define | FAR_FUTURE ((time_t) (((time_t) 0x7fffffff) << ((sizeof (time_t) - 4) * 8))) |
Typedefs | |
| typedef enum fb_log_types_t | FB_LOG_TYPE |
| typedef enum fb_socket_type_t | FB_SOCKETTYPE |
| Magic numbers used to differentiate parameter types sent to fb_fprintf. | |
| typedef enum fb_socket_state_t | FB_SOCKETSTATE |
| Connection states. | |
| typedef enum fb_socketid_t | FB_SOCKETID |
| typedef union fb_socketaddr_t | FB_SOCKETADDR |
| Address of opposing end of a connection. | |
| typedef struct fb_message_t | FB_MESSAGE |
| Message structure. | |
| typedef struct fb_messagelist_t | FB_MESSAGELIST |
| Q list structure. | |
| typedef struct fb_ioqueue_t | FB_IOQUEUE |
| Queue structure. | |
| typedef struct fb_inputbuffer_t | FB_INPUTBUFFER |
| Connection input structure. | |
| typedef struct fb_http_request_t | FB_HTTPREQUEST |
| Structure which collects HTTP request information as it is read. | |
Enumerations | |
| enum | fb_log_types_t { FB_LOG_ERROR = 0 , FB_LOG_WARNING = 0x01 , FB_LOG_PARSER = 0x04 , FB_LOG_IO_TRACE = 0x08 , FB_LOG_CONN_STATUS = 0x10 , FB_LOG_CONN_ERROR = 0x20 , FB_LOG_TLS_STATUS = 0x100 , FB_LOG_TLS_ERROR = 0x200 , FB_LOG_HTTP_STATUS = 0x1000 , FB_LOG_HTTP_ERROR = 0x2000 , FB_LOG_HTTP_TRAFFIC = 0x4000 } |
| enum | fb_socket_type_t { FB_SOCKTYPE_SERVICE = 0x3692 , FB_SOCKTYPE_CONNECTION = 0x5285 , FB_SOCKTYPE_USER = 0xa9f7 , FB_SOCKTYPE_EVENT = 0xbd53 } |
| Magic numbers used to differentiate parameter types sent to fb_fprintf. More... | |
| enum | fb_socket_state_t { FB_SOCKET_STATE_TLS_HANDSHAKE , FB_SOCKET_STATE_GREETING , FB_SOCKET_STATE_GATHERING_HEADER , FB_SOCKET_STATE_OPEN , FB_SOCKET_STATE_FLUSHING , FB_SOCKET_STATE_CLOSING } |
| Connection states. More... | |
| enum | fb_socketid_t { FB_SOCKET_LINE_IP4 , FB_SOCKET_LINE_IP6 , FB_SOCKET_HTTP_IP4 , FB_SOCKET_HTTP_IP6 , FB_SOCKET_HTTPS_IP4 , FB_SOCKET_HTTPS_IP6 , FB_SOCKET_COUNT } |
Functions | |
| void | fb_free_freelists (void) |
| FB_MESSAGE * | fb_messagealloc (void) |
| void | fb_messagefree (FB_MESSAGE *freethis) |
| FB_MESSAGELIST * | fb_qalloc () |
| void | fb_qfree (FB_MESSAGELIST *freethis) |
| bool | fb_queue_add (FB_IOQUEUE *queue, FB_MESSAGE *message) |
| bool | fb_queue_empty (FB_IOQUEUE *q) |
| void | fb_queue_consume (FB_IOQUEUE *q, size_t consume) |
| void | fb_queue_destroy (FB_IOQUEUE *q) |
| void | fb_destroy_service (struct fb_service_t *service) |
| void | fb_schedule_reap (FB_SERVICE *service) |
| bool | fb_transfer_by_name (FB_CONNECTION *connection, const char *name) |
| void | fb_queue_event (FB_EVENT *event) |
| void | fb_dispose_event (FB_EVENT *event) |
| bool | fb_register (int socket, FB_SOCKETTYPE type, void *thing) |
| Add a socket to the registry. | |
| void | fb_unregister (int socket) |
| Remove a socket from the registry. | |
| FB_CONNECTION * | fb_accept_connection (FB_SERVICE *service, FB_SOCKETID id) |
| void | fb_destroy_connection (FB_CONNECTION *connection) |
| bool | fb_set_input_buffer_size (FB_CONNECTION *connection, size_t size) |
| bool | fb_recv_input (FB_CONNECTION *connection, ssize_t byte_count) |
| FB_EVENT * | fb_read_input (FB_EVENT *event, FB_CONNECTION *connection) |
| FB_EVENT * | fb_new_connect (FB_EVENT *event, FB_SERVICE *service) |
| FB_EVENT * | fb_send_output (FB_EVENT *event, FB_CONNECTION *connection) |
| FB_EVENT * | fb_read_websocket_input (FB_EVENT *event, FB_CONNECTION *connection) |
| bool | fb_websocket_ping (FB_CONNECTION *connection) |
| bool | fb_websocket_announce_close (FB_CONNECTION *connection) |
| bool | fb_websocket_encode (FB_CONNECTION *connection) |
| void | fb_destroy_httprequest (FB_HTTPREQUEST *request) |
| void | fb_collect_http_request (FB_EVENT *event, FB_HTTPREQUEST *request) |
| void | fb_collect_http_parameter (char *line, FB_HTTPREQUEST *request) |
| bool | fb_http_command (const char *command) |
| FB_EVENT * | fb_execute_http_request (FB_EVENT *event, FB_CONNECTION *connection) |
| int | fb_create_argv (const char *commandline, char ***result) |
| int | fb_create_argv_from_query_string (const char *query_string, char ***result, char ***remainders) |
| void | fb_destroy_argv (char **argv) |
| const char * | fb_connection_info (FB_CONNECTION *connection) |
| void | fb_set_buffering (int socket_fd, bool enable) |
| void | fb_set_readable (int socket, bool enable) |
| void | fb_set_writable (int socket, bool enable) |
Football private declarations.
| #define fb_http_socket | ( | id | ) |
| #define fb_ip6_socket | ( | id | ) |
| typedef struct fb_ioqueue_t FB_IOQUEUE |
Queue structure.
These hold output for a specific connection.
| typedef struct fb_message_t FB_MESSAGE |
Message structure.
May appear in multiple connections' queues.
| typedef struct fb_messagelist_t FB_MESSAGELIST |
Q list structure.
Per-connection list of its messages.
| enum fb_socket_state_t |
Connection states.
| enum fb_socket_type_t |
|
extern |
Add a socket to the registry.
| socket_fd | The file descriptor of the socket being added. |
| type | Type of socket (service, connection, user...) |
| thing | Pointer of type indicated by 'type'. |
|
extern |
Remove a socket from the registry.
Always succeeds, unless there's a bug.
| socket_fd | the file descriptor to unregister |