Nilorea Library
C utilities for networking, threading, graphics
Loading...
Searching...
No Matches
n_network.h File Reference

Network Engine. More...

#include "n_common.h"
#include "n_str.h"
#include "n_list.h"
#include "n_hash.h"
+ Include dependency graph for n_network.h:
+ This graph shows which files directly or indirectly include this file:

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 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 NETWORK_CONSECUTIVE_SEND_TIMEOUT   8192
 Flag to set consecutive send waiting timeout

 
#define NETWORK_DEPLETE_TIMEOUT   4096
 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 SOCKET_SIZE_FORMAT   "%d"
 socket associated printf style
 

Typedefs

typedef int(* netw_func) (void *, char *, NSTRBYTE)
 send/recv func ptr type
 
typedef int SOCKET
 default socket declaration
 

Functions

 N_ENUM_DECLARE (N_ENUM_netw_code_type, __netw_code_type)
 Network codes declaration.
 
NETWORKnetw_accept_from (NETWORK *from)
 make a normal blocking 'accept' .
 
NETWORKnetw_accept_from_ex (NETWORK *from, int send_list_limit, int recv_list_limit, int blocking, int *retval)
 make a normal 'accept' .
 
NETWORKnetw_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, int send_list_limit, int recv_list_limit, int ip_version, char *ssl_key_file, char *ssl_cert_file)
 Use this to connect a NETWORK to any listening one.
 
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
 
void 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_STRnetw_get_msg (NETWORK *netw)
 Get a message from aimed NETWORK.
 
int netw_get_queue_status (NETWORK *netw, int *nb_to_send, int *nb_to_read)
 retrieve network send queue status
 
int netw_get_state (NETWORK *netw, int *state, int *thr_engine_status)
 Get the state of a network.
 
void 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_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_POOLnetw_new_pool (int nb_min_element)
 return a new network pool of nb_min_element
 
HASH_TABLEnetw_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
 
int 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_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_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.
 
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)
 Wait for peer closing a specified Network, destroy queues, free the structure.
 
int netw_wait_close_timed (NETWORK **netw, size_t timeout)
 Wait for peer closing a specified Network, destroy queues, free the structure.
 
N_STRnetw_wait_msg (NETWORK *netw, size_t refresh, size_t timeout)
 Wait a message from aimed NETWORK.
 
int recv_data (void *netw, char *buf, NSTRBYTE n)
 recv data from the socket
 
int recv_php (SOCKET s, int *_code, char **buf)
 recv data from the socket
 
int send_data (void *netw, char *buf, NSTRBYTE n)
 send data onto the socket
 
int send_php (SOCKET s, int _code, char *buf, int n)
 send data onto the socket
 

Detailed Description

Network Engine.

Author
Castagnier Mickael
Version
2.0
Date
11/03/2015

Definition in file n_network.h.