85aaab6a6956b0ecb34763832f9b575a9771973b
[sip-router] / src / modules / call_obj / cobj.h
1 /**
2  * Header for functionality of Call Object module.
3  */
4
5 #ifndef _CALL_OBJ_H_
6 #define _CALL_OBJ_H_
7
8 #include <stdint.h>
9
10 #include "../../core/str.h"
11
12 /**
13  * Initialize call object module.
14  *
15  * /return 0 on success.
16  */
17 int cobj_init(int c_start, int c_end);
18
19 /**
20  * Close call object module.
21  */
22 void cobj_destroy(void);
23
24 /**
25  * Get a free object.
26  *
27  * /param timestamp assign this timestamp to the object we get.
28  * /param callid pointer to callid str.
29  * /return -1 if an error happens.
30  * /return number of a free object on success.
31  */
32 int cobj_get(uint64_t timestamp, str *callid);
33
34 /**
35  * Free an Object
36  *
37  * /param num number of object to free
38  * /return 0 on success
39  */
40 int cobj_free(int num);
41
42 /**
43  * Structure to store module statistics.
44  */
45 typedef struct {
46         int start;
47         int end;
48         int assigned;
49 } cobj_stats_t;
50
51 /**
52  * Fill data in cobj_stats_t structure passed as pointer.
53  *
54  * /param stats pointer to cobj_stats_t structure.
55  * /return 0 on success
56  */
57 int cobj_stats_get(cobj_stats_t *stats);
58
59 /**
60  * Free all objects at once.
61  */
62 void cobj_free_all(void);
63
64 /**
65  * Element of a returned object list.
66  */
67 typedef struct _cobj_elem {
68         int number;
69         uint64_t timestamp;     
70         str callid;
71         /* TODO */
72         struct _cobj_elem *next;
73 } cobj_elem_t;
74
75 /**
76  * Free an object list.
77  *
78  * /param elem pointer to first element in the list.
79  */
80 void cobj_free_list(cobj_elem_t *elem);
81
82 /**
83  * Get current timestamp in milliseconds.
84  *
85  * /param ts pointer to timestamp integer.
86  * /return 0 on success.
87  */
88 int get_timestamp(uint64_t *ts);
89
90 /**
91  * Get all objects which timestamp is less than or equals some value.
92  *
93  * User shall free returned list when not used any more.
94  *
95  * /param ts timestamp to compare.
96  * /param elem returned list. NULL on error of if zero elements.
97  * /param limit maximum number of objects to return. 0 means unlimited.
98  *
99  * /return number of returned objects on success.
100  * /return -1 on error
101  */
102 int cobj_get_timestamp(uint64_t ts, cobj_elem_t **elem, int limit);
103
104 #endif // _CALL_OBJ_H_