reduce stack consumption for AMI and AMI/HTTP requests by nearly 20K in most cases
[asterisk-bristuff.git] / include / asterisk / jabber.h
blob8d7662f978148ea9b2b6677ca614a5ea64be9384
1 /*
2 * Asterisk -- An open source telephony toolkit.
4 * Copyright (C) 1999 - 2005, Digium, Inc.
6 * Matt O'Gorman <mogorman@digium.com>
8 * See http://www.asterisk.org for more information about
9 * the Asterisk project. Please do not directly contact
10 * any of the maintainers of this project for assistance;
11 * the project provides a web site, mailing lists and IRC
12 * channels for your use.
14 * This program is free software, distributed under the terms of
15 * the GNU General Public License Version 2. See the LICENSE file
16 * at the top of the source tree.
19 #ifndef _ASTERISK_JABBER_H
20 #define _ASTERISK_JABBER_H
22 #include <iksemel.h>
23 #include "asterisk/astobj.h"
24 #include "asterisk/linkedlists.h"
26 enum aji_state {
27 AJI_DISCONNECTED = 0,
28 AJI_CONNECTING,
29 AJI_CONNECTED
32 enum {
33 AJI_AUTOPRUNE = (1 << 0),
34 AJI_AUTOREGISTER = (1 << 1)
37 enum aji_btype {
38 AJI_USER=0,
39 AJI_TRANS=1,
40 AJI_UTRANS=2
43 struct aji_version {
44 char version[50];
45 int jingle;
46 struct aji_capabilities *parent;
47 struct aji_version *next;
50 struct aji_capabilities {
51 char node[200];
52 struct aji_version *versions;
53 struct aji_capabilities *next;
56 struct aji_resource {
57 int status;
58 char resource[80];
59 char *description;
60 struct aji_version *cap;
61 int priority;
62 struct aji_resource *next;
65 struct aji_message {
66 char *from;
67 char *message;
68 char id[25];
69 time_t arrived;
70 AST_LIST_ENTRY(aji_message) list;
73 struct aji_buddy {
74 ASTOBJ_COMPONENTS(struct aji_buddy);
75 struct aji_resource *resources;
76 unsigned int flags;
79 struct aji_buddy_container {
80 ASTOBJ_CONTAINER_COMPONENTS(struct aji_buddy);
83 struct aji_transport_container {
84 ASTOBJ_CONTAINER_COMPONENTS(struct aji_transport);
87 struct aji_client {
88 ASTOBJ_COMPONENTS(struct aji_client);
89 char password[160];
90 char user[160];
91 char serverhost[160];
92 char context[100];
93 char statusmessage[256];
94 char sid[10]; /* Session ID */
95 char mid[6]; /* Message ID */
96 iksid *jid;
97 iksparser *p;
98 iksfilter *f;
99 ikstack *stack;
100 enum aji_state state;
101 int port;
102 int debug;
103 int usetls;
104 int forcessl;
105 int usesasl;
106 int keepalive;
107 int allowguest;
108 int timeout;
109 int message_timeout;
110 int authorized;
111 unsigned int flags;
112 int component; /* 0 client, 1 component */
113 struct aji_buddy_container buddies;
114 AST_LIST_HEAD(messages,aji_message) messages;
115 void *jingle;
116 pthread_t thread;
119 struct aji_client_container{
120 ASTOBJ_CONTAINER_COMPONENTS(struct aji_client);
123 int ast_aji_send(struct aji_client *client, const char *address, const char *message);
124 int ast_aji_disconnect(struct aji_client *client);
125 int ast_aji_check_roster(void);
126 void ast_aji_increment_mid(char *mid);
127 int ast_aji_create_chat(struct aji_client *client,char *room, char *server, char *topic);
128 int ast_aji_invite_chat(struct aji_client *client, char *user, char *room, char *message);
129 int ast_aji_join_chat(struct aji_client *client,char *room);
130 struct aji_client *ast_aji_get_client(const char *name);
131 struct aji_client_container *ast_aji_get_clients(void);
133 #endif