42,6 → 42,7 |
#include "../include/in.h" |
#include "../include/device.h" |
|
#include "../structures/generic_char_map.h" |
#include "../structures/dynamic_fifo.h" |
#include "../structures/int_map.h" |
#include "../structures/packet/packet.h" |
52,9 → 53,16 |
#define SOCKET_INITIAL_ACCEPTED_SIZE 1 |
#define SOCKET_MAX_ACCEPTEDED_SIZE 64 |
|
/** \todo |
*/ |
#define SOCKET_MAP_KEY_LISTENING "L" |
|
typedef struct socket_core socket_core_t; |
typedef socket_core_t * socket_core_ref; |
|
typedef struct socket_port socket_port_t; |
typedef socket_port_t * socket_port_ref; |
|
struct socket_core{ |
int socket_id; |
int phone; |
62,16 → 70,26 |
dyn_fifo_t received; |
dyn_fifo_t accepted; |
void * specific_data; |
const char * key; |
size_t key_length; |
}; |
|
INT_MAP_DECLARE( socket_cores, socket_core_t ); |
|
INT_MAP_DECLARE( socket_ports, socket_core_ref ); |
GENERIC_CHAR_MAP_DECLARE( socket_port_map, socket_core_ref ); |
|
INT_MAP_DECLARE( socket_ports, socket_port_t ); |
|
void socket_cores_release( int packet_phone, socket_cores_ref local_sockets, socket_ports_ref global_sockets, void ( * socket_release )( socket_core_ref socket )); |
|
int socket_bind( socket_cores_ref local_sockets, socket_ports_ref global_sockets, int socket_id, void * addr, size_t addrlen, int free_ports_start, int free_ports_end, int last_used_port ); |
int socket_bind_free_port( socket_ports_ref global_sockets, socket_core_ref socket, int free_ports_start, int free_ports_end, int last_used_port ); |
int socket_create( socket_cores_ref local_sockets, int app_phone, void * specific_data, int * socket_id ); |
int socket_destroy( int packet_phone, int socket_id, socket_cores_ref local_sockets, socket_ports_ref global_sockets ); |
int socket_destroy( int packet_phone, int socket_id, socket_cores_ref local_sockets, socket_ports_ref global_sockets, void ( * socket_release )( socket_core_ref socket )); |
int socket_reply_packets( packet_t packet, size_t * length ); |
socket_core_ref socket_port_find( socket_ports_ref global_sockets, int port, const char * key, size_t key_length ); |
void socket_port_release( socket_ports_ref global_sockets, socket_core_ref socket ); |
int socket_port_add( socket_ports_ref global_sockets, int port, socket_core_ref socket, const char * key, size_t key_length ); |
|
#endif |
|