root/trunk/src/sessions.h

Revision 680, 2.9 kB (checked in by jajcus, 3 years ago)

- dates in the copyright header updated

Line 
1 /* $Id: sessions.h,v 1.29 2004/03/16 19:30:25 mmazur Exp $ */
2
3 /*
4  *  (C) Copyright 2002-2006 Jacek Konieczny [jajcus(a)jajcus,net]
5  *
6  *  This program is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License Version 2 as
8  *  published by the Free Software Foundation.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */
19
20 #ifndef sessions_h
21 #define sessions_h
22
23 #include "users.h"
24
25 typedef struct resource_s{
26         char *name;
27         int priority;
28         int available;
29         char *show;
30         char *status;
31         struct session_s *session;
32         guint disconnect_delay_func;
33 }Resource;
34
35 typedef struct session_s{
36         User *user;
37
38         struct gg_session *ggs; /* GG session */
39         int gg_status; /* status set at GG server */
40         char *gg_status_descr;
41
42         GSource *g_source;
43         GPollFD g_pollfd;
44
45         int connected;
46         GList *current_server;
47
48         char *jid;              /* users JID, with resource */
49         struct stream_s *s;     /* Jabber stream */
50         GList *resources;
51        
52         char *req_id;  /* ID if user registration request (<iq/>) */
53
54         xmlnode query; /* The query */
55         gg_pubdir50_t pubdir_change; /* Info for public directory change reqested on registration */
56         int get_roster;
57         guint ping_timeout_func;
58         guint timeout_func;
59         GTimer *ping_timer;
60         gboolean waiting_for_pong;
61 }Session;
62
63 typedef struct gg_server_s {
64         struct in_addr addr;
65         int port;
66         int tls;
67 }GgServer;
68
69 extern GHashTable *sessions_jid;
70
71 Session *session_create(User *user,const char *jid,const char *req_id,
72                 const xmlnode query,struct stream_s *stream,int delay_login);
73 int session_remove(Session *s);
74
75 /* available==-1 means invisible */
76 int session_set_status(Session *s,const char *resource,int available,
77                         const char *show,const char *status,int priority);
78 int session_send_status(Session *s);
79
80 int session_update_contact(Session *s, Contact *c);
81
82 int session_send_message(Session *s,uin_t uin,int chat,const char *body);
83 int session_send_notify(Session *s);
84
85 /* Finds resource representing current state,
86  * probably the one with highest priority */
87 Resource *session_get_cur_resource(Session *s);
88
89 /*
90  * Finds session associated with JID.
91  * If none exists and stream is given, new session is created
92  * If delay_login != 0, than the session is not logged in, when created, but on
93  * the first status change
94  */
95 Session *session_get_by_jid(const char *jid,struct stream_s *stream,int delay_login);
96
97 void session_print(Session *s,int indent);
98 void sessions_print_all(int indent);
99 char * session_get_info_string(const Session *sess);
100
101 int sessions_init();
102 int sessions_done();
103
104 #endif
Note: See TracBrowser for help on using the browser.