]> rtime.felk.cvut.cz Git - frescor/fwp.git/blob - fwp/lib/core/fwp_endpoint.h
Endpoint and vres validity checking
[frescor/fwp.git] / fwp / lib / core / fwp_endpoint.h
1 #ifndef _FWP_ENDPOINT_H
2 #define _FWP_ENDPOINT_H
3
4 #include "fwp_util.h"
5 #include "fwp_msgb.h"
6
7 #define FWP_ANY_NODE INADDR_ANY
8
9 typedef enum {
10         FWP_EPOINT_BESTEFFORT   = 0,
11         FWP_EPOINT_RELIABLE     = 1,
12 } fwp_endpoint_reliability_t;
13
14 typedef unsigned int fwp_endpoint_id_t;
15
16 struct fwp_endpoint;
17 typedef struct fwp_endpoint fwp_endpoint_t;
18 /* fwp endpoint descriptor type */
19 typedef struct fwp_endpoint* fwp_endpoint_d_t;
20
21 typedef
22 struct fwp_endpoint_attr {
23         unsigned int reliability;
24         unsigned int max_connections;
25         /* queueing policy*/
26 } fwp_endpoint_attr_t;
27
28 #include "fwp_vres.h"
29 #include <string.h>
30
31 int fwp_endpoint_table_init(unsigned int nr_endpoints);
32 int fwp_endpoint_get_params(fwp_endpoint_d_t epointd, unsigned int *node, 
33                                 unsigned int *port, fwp_endpoint_attr_t *attr);
34
35 int fwp_send_endpoint_create(unsigned int node, unsigned int port,
36                                 fwp_endpoint_attr_t *attr, 
37                                 fwp_endpoint_d_t *epointdp);
38 int fwp_receive_endpoint_create(/*unsigned int node,*/ unsigned int port,
39                                 fwp_endpoint_attr_t *attr, 
40                                 fwp_endpoint_d_t *epointdp);
41 int fwp_endpoint_destroy(fwp_endpoint_d_t epointd);
42
43 int fwp_send_endpoint_bind(fwp_endpoint_d_t epointd, fwp_vres_d_t vresd);
44 int fwp_send_endpoint_unbind(fwp_endpoint_d_t epointd);
45
46 ssize_t fwp_recv(fwp_endpoint_d_t epointd, void *buffer, 
47                         size_t buffer_size, int flags);
48 int fwp_send(fwp_endpoint_d_t epointd, void *msg, size_t size, int flags);
49
50 int fwp_endpoint_attr_init(fwp_endpoint_attr_t *attr);
51 static inline int fwp_endpoint_attr_setreliability(fwp_endpoint_attr_t *attr, 
52                                                         int reliability)
53 {
54         attr->reliability = reliability;
55         return 0;
56 }
57
58 /* Sets queueing policy */
59 /*int fwp_endpoint_attr_setqpolicy(fwp_endpoint_attr_t *attr);*/
60
61 #endif /*_FWP_ENDPOINT_H */