2 * @file frescan_requests.h
4 * @brief FRESCAN requests
6 * This module contains an operation to create the queue, an operation to
7 * enqueue a message (with a request), and an operation to
14 * @author Daniel Sangorrin <daniel.sangorrin@unican.es>
18 #ifndef _FRESCAN_REQUESTS_QUEUE_H_
19 #define _FRESCAN_REQUESTS_QUEUE_H_
22 #include "frescan_data.h" // frescan_contract_t
23 #include "frescan_reply_objs.h" // frescan_robj_id_t
25 typedef uint16_t frescan_request_id_t; /* 0 .. MX_REQUESTS */
28 FRESCAN_NEGOTIATE = 0, // Negotiate a contract
29 FRESCAN_RENEGOTIATE = 1, // Renegotiate a contract
30 FRESCAN_CANCEL = 2, // Cancel a contract
33 extern int frescan_requests_init(int max_ceiling);
35 extern int frescan_request_alloc(frescan_request_id_t *id);
37 extern int frescan_request_free(frescan_request_id_t id);
39 extern int frescan_request_set_type(frescan_request_id_t id,
40 frescan_req_type_t type);
42 extern int frescan_request_set_reply(frescan_request_id_t id,
43 frescan_robj_id_t reply);
45 extern int frescan_request_set_contract(frescan_request_id_t id,
46 const frescan_contract_t *contract);
48 extern int frescan_request_set_ss(frescan_request_id_t id,
51 extern int frescan_request_set_src(frescan_request_id_t id,
54 extern int frescan_request_set_return_info(frescan_request_id_t id,
57 extern int frescan_request_get_type(frescan_request_id_t id,
58 frescan_req_type_t *type);
60 extern int frescan_request_get_reply(frescan_request_id_t id,
61 frescan_robj_id_t *reply);
63 extern int frescan_request_get_contract(frescan_request_id_t id,
64 frescan_contract_t **contract);
66 extern int frescan_request_get_src(frescan_request_id_t id,
69 extern int frescan_request_get_return_info(frescan_request_id_t id,
72 extern int frescan_requestqueue_enqueue(frescan_request_id_t id);
74 extern int frescan_requestqueue_dequeue(frescan_request_id_t *id);
76 #endif // _FRESCAN_REQUESTS_QUEUE_H_