Subversion Repositories HelenOS

Rev

Rev 4726 | Rev 4747 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4726 Rev 4738
Line 40... Line 40...
40
#include <sys/types.h>
40
#include <sys/types.h>
41
 
41
 
42
#include "../include/in.h"
42
#include "../include/in.h"
43
#include "../include/device.h"
43
#include "../include/device.h"
44
 
44
 
-
 
45
#include "../structures/generic_char_map.h"
45
#include "../structures/dynamic_fifo.h"
46
#include "../structures/dynamic_fifo.h"
46
#include "../structures/int_map.h"
47
#include "../structures/int_map.h"
47
#include "../structures/packet/packet.h"
48
#include "../structures/packet/packet.h"
48
 
49
 
49
#define SOCKET_INITIAL_RECEIVED_SIZE    4
50
#define SOCKET_INITIAL_RECEIVED_SIZE    4
50
#define SOCKET_MAX_RECEIVED_SIZE        64
51
#define SOCKET_MAX_RECEIVED_SIZE        64
51
 
52
 
52
#define SOCKET_INITIAL_ACCEPTED_SIZE    1
53
#define SOCKET_INITIAL_ACCEPTED_SIZE    1
53
#define SOCKET_MAX_ACCEPTEDED_SIZE      64
54
#define SOCKET_MAX_ACCEPTEDED_SIZE      64
54
 
55
 
-
 
56
/** \todo
-
 
57
 */
-
 
58
#define SOCKET_MAP_KEY_LISTENING    "L"
-
 
59
 
55
typedef struct socket_core  socket_core_t;
60
typedef struct socket_core  socket_core_t;
56
typedef socket_core_t *     socket_core_ref;
61
typedef socket_core_t *     socket_core_ref;
57
 
62
 
-
 
63
typedef struct socket_port  socket_port_t;
-
 
64
typedef socket_port_t *     socket_port_ref;
-
 
65
 
58
struct socket_core{
66
struct socket_core{
59
    int             socket_id;
67
    int             socket_id;
60
    int             phone;
68
    int             phone;
61
    int             port;
69
    int             port;
62
    dyn_fifo_t      received;
70
    dyn_fifo_t      received;
63
    dyn_fifo_t      accepted;
71
    dyn_fifo_t      accepted;
64
    void *          specific_data;
72
    void *          specific_data;
-
 
73
    const char *    key;
-
 
74
    size_t          key_length;
65
};
75
};
66
 
76
 
67
INT_MAP_DECLARE( socket_cores, socket_core_t );
77
INT_MAP_DECLARE( socket_cores, socket_core_t );
68
 
78
 
-
 
79
GENERIC_CHAR_MAP_DECLARE( socket_port_map, socket_core_ref );
-
 
80
 
69
INT_MAP_DECLARE( socket_ports, socket_core_ref );
81
INT_MAP_DECLARE( socket_ports, socket_port_t );
-
 
82
 
-
 
83
void    socket_cores_release( int packet_phone, socket_cores_ref local_sockets, socket_ports_ref global_sockets, void ( * socket_release )( socket_core_ref socket ));
70
 
84
 
71
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 );
85
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 );
72
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 );
86
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 );
73
int socket_create( socket_cores_ref local_sockets, int app_phone, void * specific_data, int * socket_id );
87
int socket_create( socket_cores_ref local_sockets, int app_phone, void * specific_data, int * socket_id );
74
int socket_destroy( int packet_phone, int socket_id, socket_cores_ref local_sockets, socket_ports_ref global_sockets );
88
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 ));
-
 
89
int socket_reply_packets( packet_t packet, size_t * length );
-
 
90
socket_core_ref socket_port_find( socket_ports_ref global_sockets, int port, const char * key, size_t key_length );
-
 
91
void    socket_port_release( socket_ports_ref global_sockets, socket_core_ref socket );
-
 
92
int socket_port_add( socket_ports_ref global_sockets, int port, socket_core_ref socket, const char * key, size_t key_length );
75
 
93
 
76
#endif
94
#endif
77
 
95
 
78
/** @}
96
/** @}
79
 */
97
 */