]> rtime.felk.cvut.cz Git - frescor/fna.git/blob - src_frescan/frescan_requests.h
7bbb6b5cb09e7104a92968d3891ffc850e66ef2b
[frescor/fna.git] / src_frescan / frescan_requests.h
1 /*!
2  * @file frescan_requests.h
3  *
4  * @brief FRESCAN requests
5  *
6  * This module contains an operation to create the queue, an operation to
7  * enqueue a message (with a request), and an operation to
8  * dequeue a message.
9  *
10  * @version 0.01
11  *
12  * @date 1-Apr-2008
13  *
14  * @author Daniel Sangorrin <daniel.sangorrin@unican.es>
15  *
16  */
17
18 #ifndef _FRESCAN_REQUESTS_QUEUE_H_
19 #define _FRESCAN_REQUESTS_QUEUE_H_
20
21 #include <stdint.h>
22 #include "frescan_data.h"          // frescan_contract_t
23 #include "frescan_reply_objs.h" // frescan_robj_id_t
24
25 typedef uint16_t frescan_request_id_t; /* 0 .. MX_REQUESTS */
26
27 typedef enum {
28         FRESCAN_NEGOTIATE   =  0,  // Negotiate a contract
29         FRESCAN_RENEGOTIATE =  1,  // Renegotiate a contract
30         FRESCAN_CANCEL      =  2,  // Cancel a contract
31  } frescan_req_type_t;
32
33 extern int frescan_requests_init(int max_ceiling);
34
35 extern int frescan_request_alloc(frescan_request_id_t *id);
36
37 extern int frescan_request_free(frescan_request_id_t id);
38
39 extern int frescan_request_set_type(frescan_request_id_t id,
40                                     frescan_req_type_t type);
41
42 extern int frescan_request_set_reply(frescan_request_id_t id,
43                                      frescan_robj_id_t reply);
44
45 extern int frescan_request_set_contract(frescan_request_id_t id,
46                                         const frescan_contract_t *contract);
47
48 extern int frescan_request_set_ss(frescan_request_id_t id,
49                                   frescan_ss_t         ss);
50
51 extern int frescan_request_set_src(frescan_request_id_t id,
52                                    frescan_node_t src);
53
54 extern int frescan_request_set_return_info(frescan_request_id_t id,
55                                            void *return_info);
56
57 extern int frescan_request_get_type(frescan_request_id_t id,
58                                     frescan_req_type_t *type);
59
60 extern int frescan_request_get_reply(frescan_request_id_t id,
61                                      frescan_robj_id_t *reply);
62
63 extern int frescan_request_get_contract(frescan_request_id_t id,
64                                         frescan_contract_t **contract);
65
66 extern int frescan_request_get_src(frescan_request_id_t id,
67                                    frescan_node_t *src);
68
69 extern int frescan_request_get_return_info(frescan_request_id_t id,
70                                            void **return_info);
71
72 extern int frescan_requestqueue_enqueue(frescan_request_id_t id);
73
74 extern int frescan_requestqueue_dequeue(frescan_request_id_t *id);
75
76 #endif // _FRESCAN_REQUESTS_QUEUE_H_