Mercurial > pidgin
annotate src/connection.c @ 5943:a4f2aba0848d
[gaim-migrate @ 6384]
This should fix corruption in the blist, accounts, and pounces when some
protocol plugins cannot load. Some parts of gaim now use the new unique
Plugin or Protocol Plugin IDs, while some still use the old protocol
numbers. Accounts kind of used both, and when prpls were missing, it had
trouble finding accounts. It would find the names, even without mapping the
protocol numbers to IDs, and any duplicate accounts would get nuked. That
would then affect pounce saving. Anyhow, long story short (well, it's
already long, too late for that), this should fix all that mess. And
introduce new mess, but hopefully temporary mess.
committer: Tailor Script <tailor@pidgin.im>
| author | Christian Hammond <chipx86@chipx86.com> |
|---|---|
| date | Mon, 23 Jun 2003 02:00:15 +0000 |
| parents | 03f1d6cd784c |
| children | 0ca618645cec |
| rev | line source |
|---|---|
| 5563 | 1 /** |
| 2 * @file connection.c Connection API | |
| 3 * @ingroup core | |
| 4 * | |
| 5 * gaim | |
| 6 * | |
| 7 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org> | |
| 5631 | 8 * |
| 5563 | 9 * This program is free software; you can redistribute it and/or modify |
| 10 * it under the terms of the GNU General Public License as published by | |
| 11 * the Free Software Foundation; either version 2 of the License, or | |
| 12 * (at your option) any later version. | |
| 13 * | |
| 14 * This program is distributed in the hope that it will be useful, | |
| 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 17 * GNU General Public License for more details. | |
| 18 * | |
| 19 * You should have received a copy of the GNU General Public License | |
| 20 * along with this program; if not, write to the Free Software | |
| 21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 22 */ | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
23 #include "internal.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
24 #include "blist.h" |
| 5563 | 25 #include "connection.h" |
| 5717 | 26 #include "debug.h" |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
27 #include "log.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
28 #include "notify.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
29 #include "prefs.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
30 #include "request.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
31 #include "server.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
32 #include "sound.h" |
|
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
33 |
| 5563 | 34 static GList *connections = NULL; |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
35 static GList *connections_connecting = NULL; |
| 5563 | 36 static GaimConnectionUiOps *connection_ui_ops = NULL; |
| 37 | |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
38 |
| 5563 | 39 GaimConnection * |
| 40 gaim_connection_new(GaimAccount *account) | |
| 41 { | |
| 42 GaimConnection *gc; | |
| 43 | |
| 44 g_return_val_if_fail(account != NULL, NULL); | |
| 45 | |
| 46 gc = g_new0(GaimConnection, 1); | |
| 47 | |
| 48 gc->prpl = gaim_find_prpl(gaim_account_get_protocol(account)); | |
| 49 | |
| 50 gaim_connection_set_account(gc, account); | |
| 51 gaim_account_set_connection(account, gc); | |
| 52 | |
| 53 return gc; | |
| 54 } | |
| 55 | |
| 56 void | |
| 57 gaim_connection_destroy(GaimConnection *gc) | |
| 58 { | |
|
5741
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
59 GaimAccount *account; |
|
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
60 |
| 5563 | 61 g_return_if_fail(gc != NULL); |
| 62 | |
| 63 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) { | |
| 64 gaim_connection_disconnect(gc); | |
| 65 | |
| 66 return; | |
| 67 } | |
| 68 | |
|
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
69 gaim_debug(GAIM_DEBUG_INFO, "connection", |
|
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
70 "Destroying connection %p\n", gc); |
|
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
71 |
|
5741
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
72 account = gaim_connection_get_account(gc); |
|
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
73 gaim_account_set_connection(account, NULL); |
|
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
74 |
| 5563 | 75 if (gc->display_name != NULL) |
| 76 g_free(gc->display_name); | |
| 77 | |
| 78 if (gc->away != NULL) | |
| 79 g_free(gc->away); | |
| 80 | |
| 81 if (gc->away_state != NULL) | |
| 82 g_free(gc->away_state); | |
| 83 | |
| 84 g_free(gc); | |
| 85 } | |
| 86 | |
| 87 void | |
| 88 gaim_connection_connect(GaimConnection *gc) | |
| 89 { | |
| 90 GaimAccount *account; | |
| 91 GaimConnectionUiOps *ops; | |
| 92 GaimPluginProtocolInfo *prpl_info = NULL; | |
| 93 | |
| 94 g_return_if_fail(gc != NULL); | |
| 95 | |
|
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
96 gaim_debug(GAIM_DEBUG_INFO, "connection", |
|
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
97 "Connecting. gc = %p\n", gc); |
|
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
98 |
| 5563 | 99 ops = gaim_get_connection_ui_ops(); |
| 100 | |
| 101 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
| 102 | |
| 103 account = gaim_connection_get_account(gc); | |
| 104 | |
| 105 if ((prpl_info->options & OPT_PROTO_NO_PASSWORD) && | |
| 106 !(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL) && | |
| 107 gaim_account_get_password(account) == NULL) { | |
| 108 | |
|
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
109 gaim_debug(GAIM_DEBUG_INFO, "connection", "Requesting password\n"); |
|
5581
3a9b54f260e3
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5571
diff
changeset
|
110 |
| 5563 | 111 if (ops != NULL && ops->request_pass != NULL) |
| 112 ops->request_pass(gc); | |
| 113 | |
| 114 return; | |
| 115 } | |
| 116 | |
| 117 gaim_connection_set_state(gc, GAIM_CONNECTING); | |
| 118 | |
|
5581
3a9b54f260e3
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5571
diff
changeset
|
119 gaim_debug(GAIM_DEBUG_INFO, "connection", "Calling serv_login\n"); |
|
3a9b54f260e3
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5571
diff
changeset
|
120 |
|
5623
8c895d80159a
[gaim-migrate @ 6030]
Christian Hammond <chipx86@chipx86.com>
parents:
5622
diff
changeset
|
121 connections = g_list_append(connections, gc); |
|
8c895d80159a
[gaim-migrate @ 6030]
Christian Hammond <chipx86@chipx86.com>
parents:
5622
diff
changeset
|
122 |
| 5563 | 123 serv_login(account); |
| 124 } | |
| 125 | |
| 126 void | |
| 127 gaim_connection_disconnect(GaimConnection *gc) | |
| 128 { | |
|
5926
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
129 GaimAccount *account; |
| 5563 | 130 GList *wins; |
| 131 | |
| 132 g_return_if_fail(gc != NULL); | |
| 133 | |
|
5926
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
134 account = gaim_connection_get_account(gc); |
|
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
135 |
|
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
136 if (gaim_account_get_connection(account) != NULL) { |
|
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
137 gaim_account_disconnect(account); |
|
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
138 return; |
|
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
139 } |
|
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
140 |
|
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
141 gaim_debug(GAIM_DEBUG_INFO, "connection", |
|
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
142 "Disconnecting connection %p\n", gc); |
|
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
143 |
|
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
144 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) { |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
145 if (gaim_connection_get_state(gc) != GAIM_CONNECTING) |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
146 gaim_blist_remove_account(gaim_connection_get_account(gc)); |
| 5563 | 147 |
|
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
148 serv_close(gc); |
| 5563 | 149 |
|
5859
022786c7ab53
[gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
5788
diff
changeset
|
150 connections = g_list_remove(connections, gc); |
|
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
151 |
|
5859
022786c7ab53
[gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
5788
diff
changeset
|
152 gaim_connection_set_state(gc, GAIM_DISCONNECTED); |
| 5563 | 153 |
|
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
154 gaim_event_broadcast(event_signoff, gc); |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
155 system_log(log_signoff, gc, NULL, |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
156 OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); |
|
5615
6500a6c8d679
[gaim-migrate @ 6022]
Christian Hammond <chipx86@chipx86.com>
parents:
5581
diff
changeset
|
157 |
|
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
158 /* |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
159 * XXX This is a hack! Remove this and replace it with a better event |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
160 * notification system. |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
161 */ |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
162 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
163 GaimWindow *win = (GaimWindow *)wins->data; |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
164 gaim_conversation_update(gaim_window_get_conversation_at(win, 0), |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
165 GAIM_CONV_ACCOUNT_OFFLINE); |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
166 } |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
167 |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
168 gaim_request_close_with_handle(gc); |
|
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
169 gaim_notify_close_with_handle(gc); |
| 5563 | 170 } |
| 171 | |
|
5622
70ae81fc802f
[gaim-migrate @ 6029]
Christian Hammond <chipx86@chipx86.com>
parents:
5615
diff
changeset
|
172 gaim_connection_destroy(gc); |
| 5563 | 173 } |
| 174 | |
| 175 /* | |
| 176 * d:)->-< | |
| 177 * | |
| 178 * d:O-\-< | |
| 179 * | |
| 180 * d:D-/-< | |
| 181 * | |
| 182 * d8D->-< DANCE! | |
| 183 */ | |
| 184 | |
| 185 void | |
| 186 gaim_connection_set_state(GaimConnection *gc, GaimConnectionState state) | |
| 187 { | |
|
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
188 GaimConnectionUiOps *ops; |
|
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
189 |
| 5563 | 190 g_return_if_fail(gc != NULL); |
| 191 | |
|
5784
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
192 if (gc->state == state) |
|
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
193 return; |
|
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
194 |
| 5563 | 195 gc->state = state; |
| 196 | |
|
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
197 ops = gaim_get_connection_ui_ops(); |
|
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
198 |
|
5905
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
199 if (gc->state == GAIM_CONNECTING) { |
|
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
200 connections_connecting = g_list_append(connections_connecting, gc); |
|
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
201 } |
|
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
202 else { |
|
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
203 connections_connecting = g_list_remove(connections_connecting, gc); |
|
5905
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
204 } |
|
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
205 |
| 5563 | 206 if (gc->state == GAIM_CONNECTED) { |
| 207 GaimBlistNode *gnode,*bnode; | |
| 208 GList *wins; | |
| 209 GList *add_buds=NULL; | |
| 210 | |
| 211 /* Set the time the account came online */ | |
| 212 time(&gc->login_time); | |
| 213 | |
| 214 if (ops != NULL && ops->connected != NULL) | |
| 215 ops->connected(gc); | |
| 216 | |
| 217 gaim_blist_show(); | |
| 218 gaim_blist_add_account(gc->account); | |
| 219 | |
| 220 /* | |
| 221 * XXX This is a hack! Remove this and replace it with a better event | |
| 222 * notification system. | |
| 223 */ | |
| 224 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { | |
|
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5631
diff
changeset
|
225 GaimWindow *win = (GaimWindow *)wins->data; |
| 5563 | 226 gaim_conversation_update(gaim_window_get_conversation_at(win, 0), |
| 227 GAIM_CONV_ACCOUNT_ONLINE); | |
| 228 } | |
| 229 | |
| 230 gaim_event_broadcast(event_signon, gc); | |
| 231 system_log(log_signon, gc, NULL, | |
| 232 OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); | |
| 233 | |
| 234 #if 0 | |
| 235 /* away option given? */ | |
| 236 if (opt_away) { | |
| 237 away_on_login(opt_away_arg); | |
| 238 /* don't do it again */ | |
| 239 opt_away = 0; | |
| 240 } else if (awaymessage) { | |
| 241 serv_set_away(gc, GAIM_AWAY_CUSTOM, awaymessage->message); | |
| 242 } | |
| 243 if (opt_away_arg != NULL) { | |
| 244 g_free(opt_away_arg); | |
| 245 opt_away_arg = NULL; | |
| 246 } | |
| 247 #endif | |
| 248 | |
| 249 /* let the prpl know what buddies we pulled out of the local list */ | |
| 250 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { | |
| 251 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 252 continue; | |
| 253 for(bnode = gnode->child; bnode; bnode = bnode->next) { | |
| 254 if(GAIM_BLIST_NODE_IS_BUDDY(bnode)) { | |
| 255 struct buddy *b = (struct buddy *)bnode; | |
| 256 if(b->account == gc->account) { | |
| 257 add_buds = g_list_append(add_buds, b->name); | |
| 258 } | |
| 259 } | |
| 260 } | |
| 261 } | |
| 262 | |
| 263 if(add_buds) { | |
| 264 serv_add_buddies(gc, add_buds); | |
| 265 g_list_free(add_buds); | |
| 266 } | |
| 267 | |
| 268 serv_set_permit_deny(gc); | |
| 269 } | |
|
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
270 else if (gc->state == GAIM_DISCONNECTED) { |
|
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
271 if (ops != NULL && ops->disconnected != NULL) |
|
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
272 ops->disconnected(gc, NULL); |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
273 } |
| 5563 | 274 } |
| 275 | |
| 276 void | |
| 277 gaim_connection_set_account(GaimConnection *gc, GaimAccount *account) | |
| 278 { | |
| 279 g_return_if_fail(gc != NULL); | |
| 280 g_return_if_fail(account != NULL); | |
| 281 | |
| 282 gc->account = account; | |
| 283 } | |
| 284 | |
| 285 void | |
| 286 gaim_connection_set_display_name(GaimConnection *gc, const char *name) | |
| 287 { | |
| 288 g_return_if_fail(gc != NULL); | |
| 289 | |
| 290 if (gc->display_name != NULL) | |
| 291 g_free(gc->display_name); | |
| 292 | |
| 293 gc->display_name = (name == NULL ? NULL : g_strdup(name)); | |
| 294 } | |
| 295 | |
| 296 GaimConnectionState | |
| 297 gaim_connection_get_state(const GaimConnection *gc) | |
| 298 { | |
| 299 g_return_val_if_fail(gc != NULL, GAIM_DISCONNECTED); | |
| 300 | |
| 301 return gc->state; | |
| 302 } | |
| 303 | |
| 304 GaimAccount * | |
| 305 gaim_connection_get_account(const GaimConnection *gc) | |
| 306 { | |
| 307 g_return_val_if_fail(gc != NULL, NULL); | |
| 308 | |
| 309 return gc->account; | |
| 310 } | |
| 311 | |
| 312 const char * | |
| 313 gaim_connection_get_display_name(const GaimConnection *gc) | |
| 314 { | |
| 315 g_return_val_if_fail(gc != NULL, NULL); | |
| 316 | |
| 317 return gc->display_name; | |
| 318 } | |
| 319 | |
| 320 void | |
| 321 gaim_connection_update_progress(GaimConnection *gc, const char *text, | |
| 322 size_t step, size_t count) | |
| 323 { | |
| 324 GaimConnectionUiOps *ops; | |
| 325 | |
| 326 g_return_if_fail(gc != NULL); | |
| 327 g_return_if_fail(text != NULL); | |
| 328 g_return_if_fail(step < count); | |
| 329 g_return_if_fail(count > 1); | |
| 330 | |
| 331 ops = gaim_get_connection_ui_ops(); | |
| 332 | |
| 333 if (ops != NULL && ops->connect_progress != NULL) | |
| 334 ops->connect_progress(gc, text, step, count); | |
| 335 } | |
| 336 | |
| 337 void | |
|
5571
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
338 gaim_connection_notice(GaimConnection *gc, const char *text) |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
339 { |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
340 GaimConnectionUiOps *ops; |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
341 |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
342 g_return_if_fail(gc != NULL); |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
343 g_return_if_fail(text != NULL); |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
344 |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
345 ops = gaim_get_connection_ui_ops(); |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
346 |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
347 if (ops != NULL && ops->notice != NULL) |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
348 ops->notice(gc, text); |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
349 } |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
350 |
|
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
351 void |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
352 gaim_connection_error(GaimConnection *gc, const char *text) |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
353 { |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
354 GaimConnectionUiOps *ops; |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
355 |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
356 g_return_if_fail(gc != NULL); |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
357 g_return_if_fail(text != NULL); |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
358 |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
359 ops = gaim_get_connection_ui_ops(); |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
360 |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
361 if (ops != NULL && ops->disconnected != NULL) |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
362 ops->disconnected(gc, text); |
| 5727 | 363 |
| 364 gaim_connection_disconnect(gc); | |
|
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
365 } |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
366 |
|
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
367 void |
| 5563 | 368 gaim_connections_disconnect_all(void) |
| 369 { | |
| 370 GList *l; | |
| 371 | |
|
5624
4cc9e3fa22c4
[gaim-migrate @ 6031]
Christian Hammond <chipx86@chipx86.com>
parents:
5623
diff
changeset
|
372 while ((l = gaim_connections_get_all()) != NULL) |
| 5563 | 373 gaim_connection_destroy(l->data); |
| 374 } | |
| 375 | |
| 376 GList * | |
| 377 gaim_connections_get_all(void) | |
| 378 { | |
| 379 return connections; | |
| 380 } | |
| 381 | |
|
5788
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
382 GList * |
|
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
383 gaim_connections_get_connecting(void) |
|
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
384 { |
|
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
385 return connections_connecting; |
|
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
386 } |
|
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
387 |
| 5563 | 388 void |
| 389 gaim_set_connection_ui_ops(GaimConnectionUiOps *ops) | |
| 390 { | |
| 391 connection_ui_ops = ops; | |
| 392 } | |
| 393 | |
| 394 GaimConnectionUiOps * | |
| 395 gaim_get_connection_ui_ops(void) | |
| 396 { | |
| 397 return connection_ui_ops; | |
| 398 } | |
| 399 |
