]> rtime.felk.cvut.cz Git - frescor/fwp.git/blob - fwp/lib/fwp/fwp_endpoint.h
Rename lib/core to lib/fwp. Clean-ups
[frescor/fwp.git] / fwp / lib / fwp / fwp_endpoint.h
1 #ifndef _FWP_ENDPOINT_H
2 #define _FWP_ENDPOINT_H
3
4 #define FWP_ANY_NODE INADDR_ANY
5
6 typedef enum {
7         FWP_EPOINT_BESTEFFORT   = 0,
8         FWP_EPOINT_RELIABLE     = 1,
9 } fwp_endpoint_reliability_t;
10
11 struct fwp_endpoint;
12 typedef struct fwp_endpoint fwp_endpoint_t;
13 /** fwp endpoint descriptor type */
14 typedef struct fwp_endpoint* fwp_endpoint_d_t;
15
16 typedef unsigned int fwp_addr_t;
17
18 /**
19  * Endpoint attributes
20  */
21 typedef
22 struct fwp_endpoint_attr {
23         /** Specifies whether fwp enpoint is reliable (TCP) or not (UDP)*/
24         unsigned int reliability;
25         /** Specifies max number of allowed connections */
26         unsigned int max_connections;
27         /* queueing policy*/
28 } fwp_endpoint_attr_t;
29
30 /*TODO: extract FWP_DEBUG from fwp_utils.h */
31 #include "fwp_utils.h"
32 #include "fwp_vres.h"
33
34 int fwp_endpoint_get_params(fwp_endpoint_d_t epointd, unsigned int *node, 
35                                 unsigned int *port, fwp_endpoint_attr_t *attr);
36 int fwp_send_endpoint_create(unsigned int node, unsigned int port,
37                                 fwp_endpoint_attr_t *attr, 
38                                 fwp_endpoint_d_t *epointd);
39 int fwp_receive_endpoint_create(/*unsigned int node,*/ unsigned int port,
40                                 fwp_endpoint_attr_t *attr, 
41                                 fwp_endpoint_d_t *epointd);
42 int fwp_endpoint_destroy(fwp_endpoint_d_t epointd);
43
44 int fwp_send_endpoint_bind(fwp_endpoint_d_t epointd, fwp_vres_d_t vresd);
45 int fwp_send_endpoint_unbind(fwp_endpoint_d_t epointd);
46
47 ssize_t fwp_recv(fwp_endpoint_d_t epointd,
48                         void *buffer, const size_t buffer_size,
49                         unsigned int *from, int flags);
50 int fwp_send(fwp_endpoint_d_t epointd, const void *msg, const size_t size, 
51                 int flags);
52 int fwp_endpoint_attr_init(fwp_endpoint_attr_t *attr);
53
54 static inline int fwp_endpoint_attr_setreliability(fwp_endpoint_attr_t *attr, 
55                                                         int reliability)
56 {
57         attr->reliability = reliability;
58         return 0;
59 }
60
61 /* Sets queueing policy */
62 /*int fwp_endpoint_attr_setqpolicy(fwp_endpoint_attr_t *attr);*/
63 #ifdef _FWP_INTERNALS_
64
65 int fwp_endpoint_table_init(unsigned int nr_endpoints);
66
67 #endif /*_FWP_INTERNALS_*/
68 #endif /*_FWP_ENDPOINT_H */