summaryrefslogtreecommitdiff
path: root/toxcore/group.h
diff options
context:
space:
mode:
Diffstat (limited to 'toxcore/group.h')
-rw-r--r--toxcore/group.h64
1 files changed, 33 insertions, 31 deletions
diff --git a/toxcore/group.h b/toxcore/group.h
index 31e0e7e3..175999ae 100644
--- a/toxcore/group.h
+++ b/toxcore/group.h
@@ -132,15 +132,38 @@ typedef struct Group_c {
132 group_on_delete_cb *group_on_delete; 132 group_on_delete_cb *group_on_delete;
133} Group_c; 133} Group_c;
134 134
135/* Callback for group invites.
136 *
137 * data of length is what needs to be passed to join_groupchat().
138 */
135typedef void g_conference_invite_cb(Messenger *m, uint32_t friend_number, int type, const uint8_t *cookie, 139typedef void g_conference_invite_cb(Messenger *m, uint32_t friend_number, int type, const uint8_t *cookie,
136 size_t length, void *user_data); 140 size_t length, void *user_data);
141
142/* Callback for group connection. */
143typedef void g_conference_connected_cb(Messenger *m, uint32_t conference_number, void *user_data);
144
145/* Callback for group messages. */
137typedef void g_conference_message_cb(Messenger *m, uint32_t conference_number, uint32_t peer_number, int type, 146typedef void g_conference_message_cb(Messenger *m, uint32_t conference_number, uint32_t peer_number, int type,
138 const uint8_t *message, size_t length, void *user_data); 147 const uint8_t *message, size_t length, void *user_data);
148
149/* Callback for peer nickname changes. */
139typedef void peer_name_cb(Messenger *m, uint32_t conference_number, uint32_t peer_number, const uint8_t *name, 150typedef void peer_name_cb(Messenger *m, uint32_t conference_number, uint32_t peer_number, const uint8_t *name,
140 size_t length, void *user_data); 151 size_t length, void *user_data);
152
153/* Set callback function for peer list changes. */
141typedef void peer_list_changed_cb(Messenger *m, uint32_t conference_number, void *user_data); 154typedef void peer_list_changed_cb(Messenger *m, uint32_t conference_number, void *user_data);
155
156/* Callback for title changes.
157 *
158 * If peer_number == -1, then author is unknown (e.g. initial joining the group).
159 */
142typedef void title_cb(Messenger *m, uint32_t conference_number, uint32_t peer_number, const uint8_t *title, 160typedef void title_cb(Messenger *m, uint32_t conference_number, uint32_t peer_number, const uint8_t *title,
143 size_t length, void *user_data); 161 size_t length, void *user_data);
162
163/* Callback for lossy packets.
164 *
165 * NOTE: Handler must return 0 if packet is to be relayed, -1 if the packet should not be relayed.
166 */
144typedef int lossy_packet_cb(void *object, uint32_t conference_number, uint32_t peer_number, void *peer_object, 167typedef int lossy_packet_cb(void *object, uint32_t conference_number, uint32_t peer_number, void *peer_object,
145 const uint8_t *packet, uint16_t length); 168 const uint8_t *packet, uint16_t length);
146 169
@@ -156,6 +179,7 @@ typedef struct Group_Chats {
156 uint16_t num_chats; 179 uint16_t num_chats;
157 180
158 g_conference_invite_cb *invite_callback; 181 g_conference_invite_cb *invite_callback;
182 g_conference_connected_cb *connected_callback;
159 g_conference_message_cb *message_callback; 183 g_conference_message_cb *message_callback;
160 peer_name_cb *peer_name_callback; 184 peer_name_cb *peer_name_callback;
161 peer_list_changed_cb *peer_list_changed_callback; 185 peer_list_changed_cb *peer_list_changed_callback;
@@ -164,39 +188,28 @@ typedef struct Group_Chats {
164 Group_Lossy_Handler lossy_packethandlers[256]; 188 Group_Lossy_Handler lossy_packethandlers[256];
165} Group_Chats; 189} Group_Chats;
166 190
167/* Set the callback for group invites. 191/* Set the callback for group invites. */
168 *
169 * Function(Group_Chats *g_c, uint32_t friendnumber, uint8_t type, uint8_t *data, uint16_t length, void *userdata)
170 *
171 * data of length is what needs to be passed to join_groupchat().
172 */
173void g_callback_group_invite(Group_Chats *g_c, g_conference_invite_cb *function); 192void g_callback_group_invite(Group_Chats *g_c, g_conference_invite_cb *function);
174 193
175/* Set the callback for group messages. 194/* Set the callback for group connection. */
176 * 195void g_callback_group_connected(Group_Chats *g_c, g_conference_connected_cb *function);
177 * Function(Group_Chats *g_c, uint32_t groupnumber, uint32_t friendgroupnumber, uint8_t * message, uint16_t length, void *userdata) 196
178 */ 197/* Set the callback for group messages. */
179void g_callback_group_message(Group_Chats *g_c, g_conference_message_cb *function); 198void g_callback_group_message(Group_Chats *g_c, g_conference_message_cb *function);
180 199
181 200
182/* Set callback function for title changes. 201/* Set callback function for title changes. */
183 *
184 * Function(Group_Chats *g_c, uint32_t groupnumber, uint32_t friendgroupnumber, uint8_t * title, uint8_t length, void *userdata)
185 * if friendgroupnumber == -1, then author is unknown (e.g. initial joining the group)
186 */
187void g_callback_group_title(Group_Chats *g_c, title_cb *function); 202void g_callback_group_title(Group_Chats *g_c, title_cb *function);
188 203
189/* Set callback function for peer nickname changes. 204/* Set callback function for peer nickname changes.
190 * 205 *
191 * It gets called every time a peer changes their nickname. 206 * It gets called every time a peer changes their nickname.
192 * Function(Group_Chats *g_c, uint32_t groupnumber, uint32_t peernumber, const uint8_t *nick, size_t nick_len, void *userdata)
193 */ 207 */
194void g_callback_peer_name(Group_Chats *g_c, peer_name_cb *function); 208void g_callback_peer_name(Group_Chats *g_c, peer_name_cb *function);
195 209
196/* Set callback function for peer list changes. 210/* Set callback function for peer list changes.
197 * 211 *
198 * It gets called every time the name list changes(new peer, deleted peer) 212 * It gets called every time the name list changes(new peer, deleted peer)
199 * Function(Group_Chats *g_c, uint32_t groupnumber, void *userdata)
200 */ 213 */
201void g_callback_peer_list_changed(Group_Chats *g_c, peer_list_changed_cb *function); 214void g_callback_peer_list_changed(Group_Chats *g_c, peer_list_changed_cb *function);
202 215
@@ -327,12 +340,7 @@ int group_peernumber_is_ours(const Group_Chats *g_c, uint32_t groupnumber, int p
327int group_names(const Group_Chats *g_c, uint32_t groupnumber, uint8_t names[][MAX_NAME_LENGTH], uint16_t lengths[], 340int group_names(const Group_Chats *g_c, uint32_t groupnumber, uint8_t names[][MAX_NAME_LENGTH], uint16_t lengths[],
328 uint16_t length); 341 uint16_t length);
329 342
330/* Set handlers for custom lossy packets. 343/* Set handlers for custom lossy packets. */
331 *
332 * NOTE: Handler must return 0 if packet is to be relayed, -1 if the packet should not be relayed.
333 *
334 * Function(void *group object (set with group_set_object), uint32_t groupnumber, uint32_t friendgroupnumber, void *group peer object (set with group_peer_set_object), const uint8_t *packet, uint16_t length)
335 */
336void group_lossy_packet_registerhandler(Group_Chats *g_c, uint8_t byte, lossy_packet_cb *function); 344void group_lossy_packet_registerhandler(Group_Chats *g_c, uint8_t byte, lossy_packet_cb *function);
337 345
338/* High level function to send custom lossy packets. 346/* High level function to send custom lossy packets.
@@ -389,14 +397,14 @@ int group_set_object(const Group_Chats *g_c, uint32_t groupnumber, void *object)
389 */ 397 */
390int group_peer_set_object(const Group_Chats *g_c, uint32_t groupnumber, int peernumber, void *object); 398int group_peer_set_object(const Group_Chats *g_c, uint32_t groupnumber, int peernumber, void *object);
391 399
392/* Return the object tide to the group chat previously set by group_set_object. 400/* Return the object tied to the group chat previously set by group_set_object.
393 * 401 *
394 * return NULL on failure. 402 * return NULL on failure.
395 * return object on success. 403 * return object on success.
396 */ 404 */
397void *group_get_object(const Group_Chats *g_c, uint32_t groupnumber); 405void *group_get_object(const Group_Chats *g_c, uint32_t groupnumber);
398 406
399/* Return the object tide to the group chat peer previously set by group_peer_set_object. 407/* Return the object tied to the group chat peer previously set by group_peer_set_object.
400 * 408 *
401 * return NULL on failure. 409 * return NULL on failure.
402 * return object on success. 410 * return object on success.
@@ -405,8 +413,6 @@ void *group_peer_get_object(const Group_Chats *g_c, uint32_t groupnumber, int pe
405 413
406/* Set a function to be called when a new peer joins a group chat. 414/* Set a function to be called when a new peer joins a group chat.
407 * 415 *
408 * Function(void *group object (set with group_set_object), int groupnumber, int friendgroupnumber)
409 *
410 * return 0 on success. 416 * return 0 on success.
411 * return -1 on failure. 417 * return -1 on failure.
412 */ 418 */
@@ -414,8 +420,6 @@ int callback_groupchat_peer_new(const Group_Chats *g_c, uint32_t groupnumber, pe
414 420
415/* Set a function to be called when a peer leaves a group chat. 421/* Set a function to be called when a peer leaves a group chat.
416 * 422 *
417 * Function(void *group object (set with group_set_object), uint32_t groupnumber, void *group peer object (set with group_peer_set_object))
418 *
419 * return 0 on success. 423 * return 0 on success.
420 * return -1 on failure. 424 * return -1 on failure.
421 */ 425 */
@@ -423,8 +427,6 @@ int callback_groupchat_peer_delete(Group_Chats *g_c, uint32_t groupnumber, peer_
423 427
424/* Set a function to be called when the group chat is deleted. 428/* Set a function to be called when the group chat is deleted.
425 * 429 *
426 * Function(void *group object (set with group_set_object), uint32_t groupnumber)
427 *
428 * return 0 on success. 430 * return 0 on success.
429 * return -1 on failure. 431 * return -1 on failure.
430 */ 432 */