![]() |
Nilorea Library
C utilities for networking, threading, graphics
|
Network Engine. More...
#include "n_common.h"
#include "n_str.h"
#include "n_list.h"
#include "n_hash.h"
#include <openssl/err.h>
#include <openssl/ssl.h>
#include <openssl/crypto.h>
Go to the source code of this file.
Data Structures | |
struct | N_SOCKET |
Structure of a N_SOCKET. More... | |
struct | NETWORK |
Structure of a NETWORK. More... | |
struct | NETWORK_HTTP_INFO |
structure for splitting HTTP requests More... | |
struct | NETWORK_POOL |
structure of a network pool More... | |
Macros | |
#define | _OPEN_SYS_SOCK_IPV6 1 |
#define | HEAD_CODE 3 |
Code of a HEAD message. | |
#define | HEAD_SIZE 10 |
Size of a HEAD message. | |
#define | N_ENUM_netw_code_type(_) |
Network codes definition. | |
#define | NETW_MAX_RETRIES 128 |
Send or recv max number of retries. | |
#define | NETW_SOCKET_DISCONNECTED -2 |
Code for a disconnected recv. | |
#define | NETW_SOCKET_ERROR -1 |
code for a socekt error | |
#define | NETWORK_CONSECUTIVE_SEND_WAIT 2048 |
Flag to set consecutive send waiting timeout | |
#define | NETWORK_DEPLETE_QUEUES_TIMEOUT 1024 |
Flag to set network queues depletion timeout | |
#define | NETWORK_DEPLETE_SOCKET_TIMEOUT 512 |
Flag to set send buffer depletion timeout | |
#define | NETWORK_IPALL 0 |
Flag for auto detection by OS of ip version to use. | |
#define | NETWORK_IPV4 1 |
Flag to force IPV4 | |
#define | NETWORK_IPV6 2 |
Flag to force IPV6 | |
#define | NETWORK_WAIT_CLOSE_TIMEOUT 4096 |
Flag to set network closing wait timeout. | |
#define | SOCKET_SIZE_FORMAT "%d" |
socket associated printf style | |
Typedefs | |
typedef ssize_t(* | netw_func) (void *, char *, uint32_t) |
send/recv func ptr type | |
typedef int | SOCKET |
default socket declaration | |
Enumerations | |
enum | __netw_code_type { NETW_CLIENT = 2 , NETW_SERVER = 4 , NETW_RESTART_TIMER = 8 , NETW_EMPTY_SENDBUF = 16 , NETW_EMPTY_RECVBUF = 32 , NETW_RUN = 64 , NETW_EXIT_ASKED = 128 , NETW_EXITED = 256 , NETW_ERROR = 512 , NETW_ENCRYPT_NONE = 1024 , NETW_ENCRYPT_OPENSSL = 2048 , NETW_THR_ENGINE_STARTED = 4096 , NETW_THR_ENGINE_STOPPED = 8192 , NETW_DESTROY_RECVBUF = 16384 , NETW_DESTROY_SENDBUF = 32768 , ____netw_code_type_UNKNOWN_VALUE__ } |
Network codes declaration. More... | |
Functions | |
__netw_code_type | __netw_code_type_fromString (const char *str_value) |
__netw_code_type | __netw_code_type_fromStringEx (const char *str_value, int index) |
bool | __netw_code_type_isStringValid (const char *str_value) |
bool | __netw_code_type_isValid (__netw_code_type value) |
network error code | |
const char * | __netw_code_type_toString (__netw_code_type value) |
int | deplete_send_buffer (int fd, int timeout) |
wait until the socket is empty or timeout, checking each 100 msec. | |
size_t | htonst (size_t value) |
host to network size_t | |
NETWORK * | netw_accept_from (NETWORK *from) |
make a normal blocking 'accept' . | |
NETWORK * | netw_accept_from_ex (NETWORK *from, size_t send_list_limit, size_t recv_list_limit, int blocking, int *retval) |
make a normal 'accept' . | |
NETWORK * | netw_accept_nonblock_from (NETWORK *from, int blocking) |
make a normal blocking 'accept' . | |
int | netw_add_msg (NETWORK *netw, N_STR *msg) |
Add a message to send in aimed NETWORK. | |
int | netw_add_msg_ex (NETWORK *netw, char *str, unsigned int length) |
Add a message to send in aimed NETWORK. | |
int | netw_build_http_response (N_STR **http_response, int status_code, const char *server_name, const char *content_type, char *additional_headers, N_STR *body) |
function to dynamically generate an HTTP response | |
size_t | netw_calculate_urlencoded_size (const char *str, size_t len) |
function to calculate the required size for the URL-encoded string | |
int | netw_close (NETWORK **netw) |
Closing a specified Network, destroy queues, free the structure. | |
int | netw_connect (NETWORK **netw, char *host, char *port, int ip_version) |
Use this to connect a NETWORK to any listening one, unrestricted send/recv lists. | |
int | netw_connect_ex (NETWORK **netw, char *host, char *port, size_t send_list_limit, size_t recv_list_limit, int ip_version, char *ssl_key_file, char *ssl_cert_file) |
int | netw_destroy_pool (NETWORK_POOL **netw_pool) |
free a NETWORK_POOL *pool | |
NETWORK_HTTP_INFO | netw_extract_http_info (char *request) |
extract a lot of informations, mostly as pointers, and populate a NETWORK_HTTP_INFO structure | |
char * | netw_extract_http_request_type (const char *request) |
function to extract the request method from an http request | |
int | netw_get_http_date (char *buffer, size_t buffer_size) |
helper function to generate the current date in HTTP format | |
const char * | netw_get_http_status_message (int status_code) |
helper function to convert status code to a human-readable message | |
N_STR * | netw_get_msg (NETWORK *netw) |
Get a message from aimed NETWORK. | |
int | netw_get_queue_status (NETWORK *netw, size_t *nb_to_send, size_t *nb_to_read) |
retrieve network send queue status | |
int | netw_get_state (NETWORK *netw, uint32_t *state, int *thr_engine_status) |
Get the state of a network. | |
int | netw_get_url_from_http_request (const char *request, char *url, size_t size) |
Helper function to extract the URL from the HTTP request line. | |
const char * | netw_guess_http_content_type (const char *url) |
function to guess the content type based on URL extension | |
int | netw_info_destroy (NETWORK_HTTP_INFO http_request) |
destroy a NETWORK_HTTP_INFO loaded informations | |
int | netw_init_openssl (void) |
Do not directly use, internal api. | |
int | netw_init_wsa (int mode, int v1, int v2) |
Do not directly use, internal api. | |
int | netw_make_listening (NETWORK **netw, char *addr, char *port, int nbpending, int ip_version) |
Make a NETWORK be a Listening network. | |
NETWORK_POOL * | netw_new_pool (size_t nb_min_element) |
return a new network pool of nb_min_element | |
HASH_TABLE * | netw_parse_post_data (const char *post_data) |
Function to parse POST data. | |
int | netw_pool_add (NETWORK_POOL *netw_pool, NETWORK *netw) |
add a NETWORK *netw to a NETWORK_POOL *pool | |
int | netw_pool_broadcast (NETWORK_POOL *netw_pool, NETWORK *from, N_STR *net_msg) |
add net_msg to all network in netork pool | |
size_t | netw_pool_nbclients (NETWORK_POOL *netw_pool) |
return the number of networks in netw_pool | |
void | netw_pool_netw_close (void *netw_ptr) |
close a network from a network pool | |
int | netw_pool_remove (NETWORK_POOL *netw_pool, NETWORK *netw) |
remove a NETWORK *netw to a NETWORK_POOL *pool | |
void * | netw_recv_func (void *NET) |
To Thread Receiving function. | |
void * | netw_send_func (void *NET) |
Thread send function. | |
int | netw_send_ident (NETWORK *netw, int type, int id, N_STR *name, N_STR *passwd) |
Add a formatted NETWMSG_IDENT message to the specified network. | |
int | netw_send_ping (NETWORK *netw, int type, int id_from, int id_to, int time) |
Add a ping reply to the network. | |
int | netw_send_position (NETWORK *netw, int id, double X, double Y, double vx, double vy, double acc_x, double acc_y, int time_stamp) |
Add a formatted NETWMSG_IDENT message to the specified network. | |
int | netw_send_quit (NETWORK *netw) |
Add a formatted NETMSG_QUIT message to the specified network. | |
int | netw_send_string_to (NETWORK *netw, int id_to, N_STR *name, N_STR *chan, N_STR *txt, int color) |
Add a string to the network, aiming a specific user. | |
int | netw_send_string_to_all (NETWORK *netw, N_STR *name, N_STR *chan, N_STR *txt, int color) |
Add a string to the network, aiming all server-side users. | |
int | netw_set (NETWORK *netw, int flag) |
Restart or reset the specified network ability. | |
int | netw_set_blocking (NETWORK *netw, unsigned long int is_blocking) |
Modify blocking socket mode. | |
int | netw_set_crypto (NETWORK *netw, char *key, char *certificate) |
activate SSL encryption on selected network, using key and certificate | |
int | netw_set_user_id (NETWORK *netw, int id) |
associate an id and a network | |
int | netw_setsockopt (NETWORK *netw, int optname, int value) |
Modify common socket options on the given netw. | |
int | netw_ssl_connect (NETWORK **netw, char *host, char *port, int ip_version, char *ssl_key_file, char *ssl_cert_file) |
Use this to connect a NETWORK to any listening one, unrestricted send/recv lists. | |
int | netw_start_thr_engine (NETWORK *netw) |
Start the NETWORK netw Threaded Engine. | |
int | netw_stop_thr_engine (NETWORK *netw) |
Stop a NETWORK connection sending and receing thread. | |
int | netw_unload_openssl (void) |
Do not directly use, internal api. | |
char * | netw_urldecode (const char *str) |
Function to decode URL-encoded data. | |
char * | netw_urlencode (const char *str, size_t len) |
function to perform URL encoding | |
int | netw_wait_close (NETWORK **netw) |
int | netw_wait_close_timed (NETWORK **netw, size_t timeout) |
N_STR * | netw_wait_msg (NETWORK *netw, unsigned int refresh, size_t timeout) |
size_t | ntohst (size_t value) |
ssize_t | recv_data (void *netw, char *buf, uint32_t n) |
recv data from the socket | |
ssize_t | recv_php (SOCKET s, int *_code, char **buf) |
recv data from the socket | |
ssize_t | recv_ssl_data (void *netw, char *buf, uint32_t n) |
recv data from the socket | |
ssize_t | send_data (void *netw, char *buf, uint32_t n) |
send data onto the socket | |
ssize_t | send_php (SOCKET s, int _code, char *buf, int n) |
send data onto the socket | |
ssize_t | send_ssl_data (void *netw, char *buf, uint32_t n) |
send data onto the socket | |