definitions for socket abstraction api More...
#include "common.h"
#include "config.h"
#include "hashlist.h"
#include "vector.h"
#include "thread.h"
Go to the source code of this file.
Data Structures | |
struct | _cp_socket |
cp_socket is a 'server socket'. More... | |
struct | _cp_connection_descriptor |
connection descriptor structure More... | |
Defines | |
#define | CPSOCKET_DEFAULT_BACKLOG 50 |
#define | CPSOCKET_DEFAULT_DELAY_SEC 1 |
#define | CPSOCKET_DEFAULT_DELAY_USEC 0 |
#define | CPSOCKET_THREADPOOL_DEFAULT_SIZE_MIN 5 |
#define | CPSOCKET_THREADPOOL_DEFAULT_SIZE_MAX 50 |
#define | cp_connection_descriptor_get_socket(cd) ((cd)->sock) |
return cp_socket struct for given connection descriptor | |
#define | cp_connection_descriptor_get_addr(cd) ((cd)->addr) |
return client address for given connection descriptor | |
#define | cp_connection_descriptor_get_fd(cd) ((cd)->fd) |
return file descriptor for given connection descriptor | |
Typedefs | |
typedef CPROPS_DLL enum { ... } | cp_socket_strategy |
cp_socket connection handling strategy | |
typedef void *(* | cp_socket_thread_function )(void *) |
thread function for threadpool implementation | |
typedef int(* | cp_socket_callback )(struct _cp_socket *, int fd) |
function prototype for callback implementation | |
typedef CPROPS_DLL struct _cp_socket | cp_socket |
cp_socket is a 'server socket'. | |
typedef CPROPS_DLL struct _cp_connection_descriptor | cp_connection_descriptor |
connection descriptor structure | |
Enumerations | |
enum | { CPSOCKET_STRATEGY_CALLBACK, CPSOCKET_STRATEGY_THREADPOOL } |
cp_socket connection handling strategy | |
Functions | |
void | cp_socket_init () |
recommended to call before using socket functions | |
void | cp_socket_stop_all () |
call from signal handler to stop sockets in waiting select() and close all connections | |
void | cp_socket_shutdown () |
performs cleanup | |
CPROPS_DLL void | cp_tcp_add_shutdown_callback (void(*cb)(void *), void *prm) |
add callback to be made on tcp layer shutdown | |
void | cp_socket_set_backlog (cp_socket *socket, int backlog) |
set number of outstanding requests before accept() fails new connections | |
void | cp_socket_set_delay (cp_socket *socket, struct timeval delay) |
delay time before re-accept()ing | |
void | cp_socket_set_delay_sec (cp_socket *socket, long sec) |
seconds before re-accept()ing | |
void | cp_socket_set_delay_usec (cp_socket *socket, long usec) |
microseconds before re-accept()ing | |
void | cp_socket_set_poolsize_min (cp_socket *socket, int min) |
lower size limit for threadpool implementation | |
void | cp_socket_set_poolsize_max (cp_socket *socket, int max) |
upper size limit for threadpool implementation | |
void | cp_socket_set_owner (cp_socket *socket, void *owner) |
useful free pointer for client code | |
cp_socket * | cp_socket_create (int port, cp_socket_strategy strategy, void *fn) |
create a new cp_socket struct | |
void | cp_socket_delete (cp_socket *sock) |
deallocate a socket descriptor | |
int | cp_socket_listen (cp_socket *sock) |
cp_socket_listen attempts to create a SOCK_STREAM socket with socket(), bind to a local port with bind(), and set the socket to listen for connections with listen(). | |
int | cp_socket_select (cp_socket *sock) |
block and wait for connections | |
int | cp_socket_connection_close (cp_socket *sock, int fd) |
close a (non ssl) connection | |
void * | cp_socket_add_shutdown_callback (cp_socket *sock, void(*cb)(void *), void *prm) |
add a callback to be made on socket shutdown | |
cp_connection_descriptor * | cp_connection_descriptor_create (cp_socket *sock, struct sockaddr_in *addr, int fd) |
internal: create a new connection descriptor | |
void | cp_connection_descriptor_destroy (cp_connection_descriptor *conn_desc) |
deallocate a connection descriptor | |
int | cp_connection_descrpitor_read (cp_connection_descriptor *desc, char *buf, int len) |
read from a connection descriptor | |
int | cp_connection_descriptor_write (cp_connection_descriptor *desc, char *buf, int len) |
write on a connection descriptor |
definitions for socket abstraction api