Mon, 13 Aug 2007 05:59:24 +0000
Proposed "attention" API, a generalization of zaps (MySpaceIM), buzzes
(Yahoo), and nudges (MSN).
Adds a PurpleAttentionType struct to prpl.h, which is used to describe the
the attention command (some protocols, notably MySpaceIM, support more than
one).
Uses two reserved fields in PurplePluginProtocolInfo, one function for sending
an attention command, another for getting the possible attention commands
(similar to status_types).
Adds serv_got_attention() to server.c, similar to serv_got_im(), used to notify
of incoming or outgoing attention notices.
| 5872 | 1 | /** |
| 2 | * @file server.h Server API | |
| 3 | * @ingroup core | |
| 4 | * | |
| 15884 | 5 | * purple |
| 5872 | 6 | * |
| 15884 | 7 | * Purple is the legal property of its developers, whose names are too numerous |
| 8046 | 8 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 9 | * source distribution. | |
|
6787
7d8e0ba98f68
[gaim-migrate @ 7326]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
10 | * |
| 5872 | 11 | * This program is free software; you can redistribute it and/or modify |
| 12 | * it under the terms of the GNU General Public License as published by | |
| 13 | * the Free Software Foundation; either version 2 of the License, or | |
| 14 | * (at your option) any later version. | |
| 15 | * | |
| 16 | * This program is distributed in the hope that it will be useful, | |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | * GNU General Public License for more details. | |
| 20 | * | |
| 21 | * You should have received a copy of the GNU General Public License | |
| 22 | * along with this program; if not, write to the Free Software | |
| 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 24 | */ | |
| 15884 | 25 | #ifndef _PURPLE_SERVER_H_ |
| 26 | #define _PURPLE_SERVER_H_ | |
| 5872 | 27 | |
| 28 | #include "account.h" | |
| 29 | #include "conversation.h" | |
|
9718
aeee69c6c784
[gaim-migrate @ 10579]
Mark Doliner <markdoliner@pidgin.im>
parents:
9584
diff
changeset
|
30 | #include "prpl.h" |
| 5872 | 31 | |
|
5944
f19df037ac58
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
32 | #ifdef __cplusplus |
|
f19df037ac58
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
33 | extern "C" { |
|
f19df037ac58
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
34 | #endif |
|
f19df037ac58
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
35 | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
36 | /** |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
37 | * Send a typing message to a given user over a given connection. |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
38 | * |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
39 | * TODO: Could probably move this into the conversation API. |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
40 | * |
|
16262
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
41 | * @param gc The connection over which to send the typing notification. |
|
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
42 | * @param name The user to send the typing notification to. |
|
15997
ff97c5f69196
A little doxygen love and some tiny gaim->purpleisms
Mark Doliner <markdoliner@pidgin.im>
parents:
15884
diff
changeset
|
43 | * @param state One of PURPLE_TYPING, PURPLE_TYPED, or PURPLE_NOT_TYPING. |
| 15884 | 44 | * @return A quiet-period, specified in seconds, where Purple will not |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
45 | * send any additional typing notification messages. Most |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
46 | * protocols should return 0, which means that no additional |
| 15884 | 47 | * PURPLE_TYPING messages need to be sent. If this is 5, for |
| 48 | * example, then Purple will wait five seconds, and if the Purple | |
| 49 | * user is still typing then Purple will send another PURPLE_TYPING | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
50 | * message. |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
51 | */ |
| 15884 | 52 | unsigned int serv_send_typing(PurpleConnection *gc, const char *name, PurpleTypingState state); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
53 | |
| 15884 | 54 | void serv_move_buddy(PurpleBuddy *, PurpleGroup *, PurpleGroup *); |
| 55 | int serv_send_im(PurpleConnection *, const char *, const char *, PurpleMessageFlags flags); | |
| 56 | void serv_get_info(PurpleConnection *, const char *); | |
| 57 | void serv_set_info(PurpleConnection *, const char *); | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
58 | |
| 15884 | 59 | void serv_add_permit(PurpleConnection *, const char *); |
| 60 | void serv_add_deny(PurpleConnection *, const char *); | |
| 61 | void serv_rem_permit(PurpleConnection *, const char *); | |
| 62 | void serv_rem_deny(PurpleConnection *, const char *); | |
| 63 | void serv_set_permit_deny(PurpleConnection *); | |
| 64 | void serv_chat_invite(PurpleConnection *, int, const char *, const char *); | |
| 65 | void serv_chat_leave(PurpleConnection *, int); | |
| 66 | void serv_chat_whisper(PurpleConnection *, int, const char *, const char *); | |
| 67 | int serv_chat_send(PurpleConnection *, int, const char *, PurpleMessageFlags flags); | |
| 68 | void serv_alias_buddy(PurpleBuddy *); | |
| 69 | void serv_got_alias(PurpleConnection *gc, const char *who, const char *alias); | |
|
19170
7991a8286ca9
Proposed "attention" API, a generalization of zaps (MySpaceIM), buzzes
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
16262
diff
changeset
|
70 | void serv_got_attention(PurpleConnection *gc, const char *who, PurpleAttentionType *attn, gboolean incoming); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
71 | |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
72 | /** |
| 15884 | 73 | * Receive a typing message from a remote user. Either PURPLE_TYPING |
| 74 | * or PURPLE_TYPED. If the user has stopped typing then use | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
75 | * serv_got_typing_stopped instead. |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
76 | * |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
77 | * TODO: Could probably move this into the conversation API. |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
78 | * |
|
16262
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
79 | * @param gc The connection on which the typing message was received. |
|
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
80 | * @param name The name of the remote user. |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
81 | * @param timeout If this is a number greater than 0, then |
| 15884 | 82 | * Purple will wait this number of seconds and then |
| 83 | * set this buddy to the PURPLE_NOT_TYPING state. This | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
84 | * is used by protocols that send repeated typing messages |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
85 | * while the user is composing the message. |
|
16262
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
86 | * @param state The typing state received |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
87 | */ |
| 15884 | 88 | void serv_got_typing(PurpleConnection *gc, const char *name, int timeout, |
| 89 | PurpleTypingState state); | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
90 | |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
91 | /** |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
92 | * TODO: Could probably move this into the conversation API. |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
93 | */ |
| 15884 | 94 | void serv_got_typing_stopped(PurpleConnection *gc, const char *name); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13295
diff
changeset
|
95 | |
| 15884 | 96 | void serv_got_im(PurpleConnection *gc, const char *who, const char *msg, |
| 97 | PurpleMessageFlags flags, time_t mtime); | |
|
15203
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
98 | |
|
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
99 | /** |
|
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
100 | * @param data The hash function should be g_str_hash() and the equal |
|
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
101 | * function should be g_str_equal(). |
|
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
102 | */ |
|
15997
ff97c5f69196
A little doxygen love and some tiny gaim->purpleisms
Mark Doliner <markdoliner@pidgin.im>
parents:
15884
diff
changeset
|
103 | void serv_join_chat(PurpleConnection *, GHashTable *data); |
|
15203
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
104 | |
|
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
105 | /** |
|
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
106 | * @param data The hash function should be g_str_hash() and the equal |
|
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
107 | * function should be g_str_equal(). |
|
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
108 | */ |
|
15997
ff97c5f69196
A little doxygen love and some tiny gaim->purpleisms
Mark Doliner <markdoliner@pidgin.im>
parents:
15884
diff
changeset
|
109 | void serv_reject_chat(PurpleConnection *, GHashTable *data); |
|
15203
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
110 | |
|
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
111 | /** |
|
16262
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
112 | * Called by a prpl when an account is invited into a chat. |
|
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
113 | * |
|
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
114 | * @param gc The connection on which the invite arrived. |
|
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
115 | * @param name The name of the chat you're being invited to. |
|
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
116 | * @param who The username of the person inviting the account. |
|
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
117 | * @param message The optional invite message. |
|
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
118 | * @param data The components necessary if you want to call serv_join_chat(). |
|
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
119 | * The hash function should be g_str_hash() and the equal |
|
1d9b65303dfc
Doxygen updates. This eliminated all the warnings from Doxygen.
Richard Laager <rlaager@pidgin.im>
parents:
15997
diff
changeset
|
120 | * function should be g_str_equal(). |
|
15203
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
121 | */ |
| 15884 | 122 | void serv_got_chat_invite(PurpleConnection *gc, const char *name, |
| 5872 | 123 | const char *who, const char *message, |
| 124 | GHashTable *data); | |
|
15203
1a092806f344
[gaim-migrate @ 17927]
Mark Doliner <markdoliner@pidgin.im>
parents:
15043
diff
changeset
|
125 | |
| 15884 | 126 | PurpleConversation *serv_got_joined_chat(PurpleConnection *gc, |
| 5872 | 127 | int id, const char *name); |
| 15884 | 128 | void serv_got_chat_left(PurpleConnection *g, int id); |
| 129 | void serv_got_chat_in(PurpleConnection *g, int id, const char *who, | |
| 130 | PurpleMessageFlags flags, const char *message, time_t mtime); | |
| 131 | void serv_send_file(PurpleConnection *gc, const char *who, const char *file); | |
| 5872 | 132 | |
|
5944
f19df037ac58
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
133 | #ifdef __cplusplus |
|
f19df037ac58
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
134 | } |
|
f19df037ac58
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
135 | #endif |
|
f19df037ac58
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
136 | |
| 15884 | 137 | #endif /* _PURPLE_SERVER_H_ */ |