Mon, 10 Mar 2003 19:59:10 +0000
[gaim-migrate @ 5007]
buddy pounces and protocol actions work again
|
4202
8b92de3b1c07
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4113
diff
changeset
|
1 | #include "config.h" |
|
8b92de3b1c07
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4113
diff
changeset
|
2 | |
|
8b92de3b1c07
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4113
diff
changeset
|
3 | #ifndef GAIM_PLUGINS |
| 99 | 4 | #define GAIM_PLUGINS |
|
4202
8b92de3b1c07
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4113
diff
changeset
|
5 | #endif |
|
8b92de3b1c07
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4113
diff
changeset
|
6 | |
| 99 | 7 | #include "gaim.h" |
|
1404
e915b372f70a
[gaim-migrate @ 1414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1378
diff
changeset
|
8 | #include "prpl.h" |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
9 | |
| 3630 | 10 | #ifdef _WIN32 |
| 11 | #include "win32dep.h" | |
| 12 | #endif | |
| 13 | ||
|
4494
c170d1ed7fde
[gaim-migrate @ 4769]
Herman Bloggs <herman@bluedigits.com>
parents:
4491
diff
changeset
|
14 | G_MODULE_IMPORT GSList *gaim_accounts; |
|
c170d1ed7fde
[gaim-migrate @ 4769]
Herman Bloggs <herman@bluedigits.com>
parents:
4491
diff
changeset
|
15 | |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
16 | #define INITIAL 8000 |
| 4590 | 17 | #define MAXTIME 2048000 |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
18 | |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
19 | static GHashTable *hash = NULL; |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
20 | |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
21 | static guint tim = 0; |
| 99 | 22 | |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
23 | static gboolean do_signon(gpointer data) { |
| 4491 | 24 | struct gaim_account *account = data; |
|
4494
c170d1ed7fde
[gaim-migrate @ 4769]
Herman Bloggs <herman@bluedigits.com>
parents:
4491
diff
changeset
|
25 | debug_printf("do_signon called\n"); |
|
c170d1ed7fde
[gaim-migrate @ 4769]
Herman Bloggs <herman@bluedigits.com>
parents:
4491
diff
changeset
|
26 | |
| 4491 | 27 | if (g_slist_index(gaim_accounts, account) < 0) |
|
1817
67ad2e2348a2
[gaim-migrate @ 1827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1404
diff
changeset
|
28 | return FALSE; |
|
4494
c170d1ed7fde
[gaim-migrate @ 4769]
Herman Bloggs <herman@bluedigits.com>
parents:
4491
diff
changeset
|
29 | debug_printf("calling serv_login\n"); |
| 4491 | 30 | serv_login(account); |
|
4494
c170d1ed7fde
[gaim-migrate @ 4769]
Herman Bloggs <herman@bluedigits.com>
parents:
4491
diff
changeset
|
31 | debug_printf("done calling serv_login\n"); |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
32 | tim = 0; |
|
1817
67ad2e2348a2
[gaim-migrate @ 1827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1404
diff
changeset
|
33 | return FALSE; |
|
1378
49578635eddb
[gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1165
diff
changeset
|
34 | } |
|
49578635eddb
[gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1165
diff
changeset
|
35 | |
|
49578635eddb
[gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1165
diff
changeset
|
36 | static void reconnect(struct gaim_connection *gc, void *m) { |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
37 | if (!gc->wants_to_die) { |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
38 | int del; |
| 4491 | 39 | del = (int)g_hash_table_lookup(hash, gc->account); |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
40 | if (!del) |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
41 | del = INITIAL; |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
42 | else |
| 4590 | 43 | del = MIN(2 * del, MAXTIME); |
| 4491 | 44 | tim = g_timeout_add(del, do_signon, gc->account); |
| 45 | g_hash_table_insert(hash, gc->account, (gpointer)del); | |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
46 | } else { |
| 4491 | 47 | g_hash_table_remove(hash, gc->account); |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
48 | } |
| 99 | 49 | } |
| 50 | ||
| 3630 | 51 | /* |
| 52 | * EXPORTED FUNCTIONS | |
| 53 | */ | |
| 54 | ||
| 3802 | 55 | struct gaim_plugin_description desc; |
| 56 | G_MODULE_EXPORT struct gaim_plugin_description *gaim_plugin_desc() { | |
| 57 | desc.api_version = PLUGIN_API_VERSION; | |
| 4585 | 58 | desc.name = g_strdup(_("Autoreconnect")); |
| 3802 | 59 | desc.version = g_strdup(VERSION); |
|
4113
e86a6c65c2b7
[gaim-migrate @ 4329]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3802
diff
changeset
|
60 | desc.description = g_strdup(_("When you are kicked offline, this reconnects you.")); |
| 3802 | 61 | desc.authors = g_strdup("Eric Warmenhoven <eric@warmenhoven.org>"); |
| 62 | desc.url = g_strdup(WEBSITE); | |
| 63 | return &desc; | |
| 64 | } | |
| 65 | ||
| 3630 | 66 | G_MODULE_EXPORT char *name() { |
|
4113
e86a6c65c2b7
[gaim-migrate @ 4329]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3802
diff
changeset
|
67 | return _("Auto Reconnect"); |
| 3630 | 68 | } |
| 69 | ||
| 70 | G_MODULE_EXPORT char *description() { | |
|
4113
e86a6c65c2b7
[gaim-migrate @ 4329]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3802
diff
changeset
|
71 | return _("When you are kicked offline, this reconnects you."); |
| 3630 | 72 | } |
| 73 | ||
| 74 | G_MODULE_EXPORT char *gaim_plugin_init(GModule *handle) { | |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
75 | hash = g_hash_table_new(g_int_hash, g_int_equal); |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
76 | |
| 99 | 77 | gaim_signal_connect(handle, event_signoff, reconnect, NULL); |
|
1047
783f8520d9a0
[gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1030
diff
changeset
|
78 | |
|
783f8520d9a0
[gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1030
diff
changeset
|
79 | return NULL; |
| 99 | 80 | } |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
81 | |
| 3630 | 82 | G_MODULE_EXPORT void gaim_plugin_remove() { |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
83 | if (tim) |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
84 | g_source_remove(tim); |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
85 | g_hash_table_destroy(hash); |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
86 | hash = NULL; |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
87 | tim = 0; |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
88 | } |