2 #include "fwp_endpoint.h"
6 int fwp_fna_init(const frsh_resource_id_t resource_id)
11 int fwp_fna_send_endpoint_created(fna_endpoint_data_t *endpoint)
13 unsigned int node, port;
14 fwp_endpoint_attr_t *attr;
15 fwp_endpoint_t *fwp_epoint;
18 node = (unsigned int) endpoint->destination;
19 port = (unsigned int) endpoint->stream_id;
20 attr = (fwp_endpoint_attr_t*) endpoint->protocol_info.body;
21 rv = fwp_send_endpoint_create(node, port, attr, &fwp_epoint);
24 endpoint->protocol_info.body = fwp_epoint;
28 int fwp_fna_receive_endpoint_created(fna_endpoint_data_t *endpoint)
30 unsigned int node,port;
31 fwp_endpoint_attr_t *attr;
32 fwp_endpoint_t *fwp_epoint;
35 node = (unsigned int) endpoint->destination;
36 port = (unsigned int) endpoint->stream_id;
37 attr = (fwp_endpoint_attr_t*) endpoint->protocol_info.body;
38 rv = fwp_receive_endpoint_create(port, attr, &fwp_epoint);
42 endpoint->protocol_info.body = fwp_epoint;
46 int fwp_fna_send_endpoint_bind(fna_endpoint_data_t *endpoint, fna_vres_id_t vres)
48 return fwp_send_endpoint_bind(endpoint->protocol_info.body,
52 int fwp_fna_send_endpoint_unbind(fna_endpoint_data_t *endpoint)
54 return fwp_send_endpoint_unbind(endpoint->protocol_info.body);
57 int fwp_fna_endpoint_destroy(fna_endpoint_data_t *endpoint)
59 return fwp_endpoint_destroy(endpoint->endpoint_protocol_info.send.body);
62 /** FNA send routine */
63 int fwp_fna_send(const fna_endpoint_data_t *endpoint, const void *msg,
66 fwp_endpoint_t *fwp_epoint;
69 fwp_epoint = endpoint->protocol_info.body;
70 return fwp_send(fwp_epoint, msg, size, flags);
73 int fwp_fna_send_sync(const fna_endpoint_data_t *endpoint, const void *msg,
76 fwp_endpoint_t *fwp_epoint;
79 fwp_epoint = endpoint->protocol_info.body;
80 return fwp_send(fwp_epoint, msg, size, flags);
83 int fwp_fna_send_async(const fna_endpoint_data_t *endpoint,const void *msg,
86 fwp_endpoint_t *fwp_epoint;
88 fwp_epoint = (fwp_endpoint_t*) endpoint->protocol_info.body;
89 return fwp_send(fwp_epoint, msg, size, MSG_DONTWAIT);
92 /** FNA receive routines */
93 int fwp_fna_receive(const fna_endpoint_data_t *endpoint,
94 void *buffer, const size_t buffer_size,
95 size_t *received_bytes, frsh_network_address_t *from)
97 unsigned int from_addr;
99 fwp_endpoint_t *fwp_epoint;
102 fwp_epoint = (fwp_endpoint_t*) endpoint->protocol_info.body;
103 len = fwp_recv(fwp_epoint, buffer, buffer_size, &from_addr, flags);
107 *received_bytes = len;
113 int fwp_fna_receive_sync(const fna_endpoint_data_t *endpoint, void *buffer,
114 const size_t buffer_size, size_t *received_bytes,
115 frsh_network_address_t *from)
117 unsigned int from_addr;
119 fwp_endpoint_t *fwp_epoint;
122 fwp_epoint = (fwp_endpoint_t*) endpoint->protocol_info.body;
123 len = fwp_recv(fwp_epoint, buffer, buffer_size, &from_addr, flags);
127 *received_bytes = len;
133 int fwp_fna_receive_async(const fna_endpoint_data_t *endpoint, void *buffer,
134 const size_t buffer_size, size_t *received_bytes,
135 frsh_network_address_t *from)
137 unsigned int from_addr;
139 fwp_endpoint_t *fwp_epoint;
142 fwp_epoint = (fwp_endpoint_t*) endpoint->protocol_info.body;
143 len = fwp_recv(fwp_epoint, buffer, buffer_size, &from_addr, flags);
147 *received_bytes = len;
153 int fwp_fna_vres_destroy(const frsh_resource_id_t resource_id,
154 const fna_vres_id_t vres)
156 // return fwp_vres_close(vres);
160 fna_operations_t fwp_fna_operations = {
161 .fna_init = fwp_fna_init,
162 .fna_contract_negotiate = NULL,
163 .fna_contract_renegotiate_sync = NULL,
164 .fna_contract_renegotiate_async = NULL,
165 .fna_vres_get_renegotiation_status = NULL,
166 .fna_vres_destroy = fwp_fna_vres_destroy,
167 .fna_vres_get_contract = NULL,
168 .fna_vres_get_usage = NULL,
169 .fna_vres_get_remaining_budget = NULL,
170 .fna_vres_get_budget_and_period = NULL,
171 .fna_resource_get_capacity = NULL,
172 .fna_resource_get_total_weight = NULL,
173 .fna_vres_decrease_capacity = NULL,
174 .fna_send_sync = NULL,
175 .fna_send_async = fwp_fna_send_async,
176 .fna_receive_sync = fwp_fna_receive_sync,
177 .fna_receive_async = fwp_fna_receive_async,
178 .fna_send_endpoint_get_status = NULL,
179 .fna_endpoint_destroy = fwp_fna_endpoint_destroy,
180 .fna_send_endpoint_created = fwp_fna_send_endpoint_created,
181 .fna_send_endpoint_bind = fwp_fna_send_endpoint_bind,
182 .fna_send_endpoint_unbind = fwp_fna_send_endpoint_unbind,
183 .fna_receive_endpoint_created = fwp_fna_receive_endpoint_created,
184 .fna_receive_endpoint_get_status = NULL,
185 .fna_network_get_max_message_size = NULL,
186 .fna_network_bytes_to_budget = NULL,
187 .fna_network_budget_to_bytes = NULL,
188 .fna_network_get_min_eff_budget = NULL