presence: pass str parameters via pointer to couple of functions
[sip-router] / src / modules / presence / presentity.h
1 /*
2  * Copyright (C) 2006 Voice Sistem S.R.L.
3  *
4  * This file is part of Kamailio, a free SIP server.
5  *
6  * Kamailio is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version
10  *
11  * Kamailio is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License 
17  * along with this program; if not, write to the Free Software 
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  */
21
22 /*!
23  * \file
24  * \brief Kamailio presence module :: Presentity handling
25  * \ingroup presence 
26  */
27
28
29 #ifndef PRESENTITY_H
30 #define PRESENTITY_H
31
32 #include "../../core/str.h"
33 #include "../../core/parser/msg_parser.h"
34 #include "event_list.h"
35
36 extern char pres_prefix;
37
38 typedef struct presentity
39 {
40         int presid;
41         str user;
42         str domain;
43         pres_ev_t *event;
44         str etag;
45         str *sender;
46         time_t expires;
47         time_t received_time;
48         unsigned int priority;
49 } presentity_t;
50
51 /* create new presentity */
52 presentity_t *new_presentity(str *domain, str *user, int expires,
53                 pres_ev_t *event, str *etag, str *sender);
54
55 /* update presentity in database */
56 int update_presentity(struct sip_msg *msg, presentity_t *p, str *body,
57                 int t_new, int *sent_reply, char *sphere, str *etag_override, str *ruid,
58                 int replace);
59
60 /* update presentity in database using API */
61 int _api_update_presentity(str *event, str *realm, str *user, str *etag,
62                 str *sender, str *body, int expires, int new_t, int replace);
63
64 /* free memory */
65 void free_presentity(presentity_t *p);
66
67 char *generate_ETag(int publ_count);
68
69 int pres_htable_restore(void);
70
71 char *extract_sphere(str *body);
72
73 char *get_sphere(str *pres_uri);
74 typedef char *(*pres_get_sphere_t)(str *pres_uri);
75
76 int mark_presentity_for_delete(presentity_t *pres, str *ruid);
77 int delete_presentity(presentity_t *pres, str *ruid);
78 int delete_offline_presentities(str *pres_uri, pres_ev_t *event);
79
80 #endif