diff options
Diffstat (limited to 'toxcore/Messenger.h')
-rw-r--r-- | toxcore/Messenger.h | 158 |
1 files changed, 83 insertions, 75 deletions
diff --git a/toxcore/Messenger.h b/toxcore/Messenger.h index 47025fcc..833e6b2b 100644 --- a/toxcore/Messenger.h +++ b/toxcore/Messenger.h | |||
@@ -44,10 +44,10 @@ | |||
44 | 44 | ||
45 | #define FRIEND_ADDRESS_SIZE (CRYPTO_PUBLIC_KEY_SIZE + sizeof(uint32_t) + sizeof(uint16_t)) | 45 | #define FRIEND_ADDRESS_SIZE (CRYPTO_PUBLIC_KEY_SIZE + sizeof(uint32_t) + sizeof(uint16_t)) |
46 | 46 | ||
47 | enum { | 47 | typedef enum Message_Type { |
48 | MESSAGE_NORMAL, | 48 | MESSAGE_NORMAL, |
49 | MESSAGE_ACTION | 49 | MESSAGE_ACTION |
50 | }; | 50 | } Message_Type; |
51 | 51 | ||
52 | /* NOTE: Packet ids below 24 must never be used. */ | 52 | /* NOTE: Packet ids below 24 must never be used. */ |
53 | #define PACKET_ID_ONLINE 24 | 53 | #define PACKET_ID_ONLINE 24 |
@@ -57,7 +57,7 @@ enum { | |||
57 | #define PACKET_ID_USERSTATUS 50 | 57 | #define PACKET_ID_USERSTATUS 50 |
58 | #define PACKET_ID_TYPING 51 | 58 | #define PACKET_ID_TYPING 51 |
59 | #define PACKET_ID_MESSAGE 64 | 59 | #define PACKET_ID_MESSAGE 64 |
60 | #define PACKET_ID_ACTION (PACKET_ID_MESSAGE + MESSAGE_ACTION) /* 65 */ | 60 | #define PACKET_ID_ACTION (PACKET_ID_MESSAGE + MESSAGE_ACTION) // 65 |
61 | #define PACKET_ID_MSI 69 | 61 | #define PACKET_ID_MSI 69 |
62 | #define PACKET_ID_FILE_SENDREQUEST 80 | 62 | #define PACKET_ID_FILE_SENDREQUEST 80 |
63 | #define PACKET_ID_FILE_CONTROL 81 | 63 | #define PACKET_ID_FILE_CONTROL 81 |
@@ -71,9 +71,9 @@ enum { | |||
71 | /* All packets starting with a byte in this range can be used for anything. */ | 71 | /* All packets starting with a byte in this range can be used for anything. */ |
72 | #define PACKET_ID_LOSSLESS_RANGE_START 160 | 72 | #define PACKET_ID_LOSSLESS_RANGE_START 160 |
73 | #define PACKET_ID_LOSSLESS_RANGE_SIZE 32 | 73 | #define PACKET_ID_LOSSLESS_RANGE_SIZE 32 |
74 | #define PACKET_LOSSY_AV_RESERVED 8 /* Number of lossy packet types at start of range reserved for A/V. */ | 74 | #define PACKET_LOSSY_AV_RESERVED 8 // Number of lossy packet types at start of range reserved for A/V. |
75 | 75 | ||
76 | typedef struct { | 76 | typedef struct Messenger_Options { |
77 | bool ipv6enabled; | 77 | bool ipv6enabled; |
78 | bool udp_disabled; | 78 | bool udp_disabled; |
79 | TCP_Proxy_Info proxy_info; | 79 | TCP_Proxy_Info proxy_info; |
@@ -95,18 +95,18 @@ struct Receipts { | |||
95 | }; | 95 | }; |
96 | 96 | ||
97 | /* Status definitions. */ | 97 | /* Status definitions. */ |
98 | enum { | 98 | typedef enum Friend_Status { |
99 | NOFRIEND, | 99 | NOFRIEND, |
100 | FRIEND_ADDED, | 100 | FRIEND_ADDED, |
101 | FRIEND_REQUESTED, | 101 | FRIEND_REQUESTED, |
102 | FRIEND_CONFIRMED, | 102 | FRIEND_CONFIRMED, |
103 | FRIEND_ONLINE, | 103 | FRIEND_ONLINE, |
104 | }; | 104 | } Friend_Status; |
105 | 105 | ||
106 | /* Errors for m_addfriend | 106 | /* Errors for m_addfriend |
107 | * FAERR - Friend Add Error | 107 | * FAERR - Friend Add Error |
108 | */ | 108 | */ |
109 | enum { | 109 | typedef enum Friend_Add_Error { |
110 | FAERR_TOOLONG = -1, | 110 | FAERR_TOOLONG = -1, |
111 | FAERR_NOMESSAGE = -2, | 111 | FAERR_NOMESSAGE = -2, |
112 | FAERR_OWNKEY = -3, | 112 | FAERR_OWNKEY = -3, |
@@ -114,24 +114,24 @@ enum { | |||
114 | FAERR_BADCHECKSUM = -6, | 114 | FAERR_BADCHECKSUM = -6, |
115 | FAERR_SETNEWNOSPAM = -7, | 115 | FAERR_SETNEWNOSPAM = -7, |
116 | FAERR_NOMEM = -8 | 116 | FAERR_NOMEM = -8 |
117 | }; | 117 | } Friend_Add_Error; |
118 | 118 | ||
119 | 119 | ||
120 | /* Default start timeout in seconds between friend requests. */ | 120 | /* Default start timeout in seconds between friend requests. */ |
121 | #define FRIENDREQUEST_TIMEOUT 5; | 121 | #define FRIENDREQUEST_TIMEOUT 5 |
122 | 122 | ||
123 | enum { | 123 | typedef enum Connection_Status { |
124 | CONNECTION_NONE, | 124 | CONNECTION_NONE, |
125 | CONNECTION_TCP, | 125 | CONNECTION_TCP, |
126 | CONNECTION_UDP, | 126 | CONNECTION_UDP, |
127 | CONNECTION_UNKNOWN | 127 | CONNECTION_UNKNOWN |
128 | }; | 128 | } Connection_Status; |
129 | 129 | ||
130 | /* USERSTATUS - | 130 | /* USERSTATUS - |
131 | * Represents userstatuses someone can have. | 131 | * Represents userstatuses someone can have. |
132 | */ | 132 | */ |
133 | 133 | ||
134 | typedef enum { | 134 | typedef enum Userstatus { |
135 | USERSTATUS_NONE, | 135 | USERSTATUS_NONE, |
136 | USERSTATUS_AWAY, | 136 | USERSTATUS_AWAY, |
137 | USERSTATUS_BUSY, | 137 | USERSTATUS_BUSY, |
@@ -150,57 +150,76 @@ struct File_Transfers { | |||
150 | unsigned int slots_allocated; /* number of slots allocated to this transfer. */ | 150 | unsigned int slots_allocated; /* number of slots allocated to this transfer. */ |
151 | uint8_t id[FILE_ID_LENGTH]; | 151 | uint8_t id[FILE_ID_LENGTH]; |
152 | }; | 152 | }; |
153 | enum { | 153 | typedef enum Filestatus { |
154 | FILESTATUS_NONE, | 154 | FILESTATUS_NONE, |
155 | FILESTATUS_NOT_ACCEPTED, | 155 | FILESTATUS_NOT_ACCEPTED, |
156 | FILESTATUS_TRANSFERRING, | 156 | FILESTATUS_TRANSFERRING, |
157 | //FILESTATUS_BROKEN, | 157 | // FILESTATUS_BROKEN, |
158 | FILESTATUS_FINISHED | 158 | FILESTATUS_FINISHED |
159 | }; | 159 | } Filestatus; |
160 | 160 | ||
161 | enum { | 161 | typedef enum File_Pause { |
162 | FILE_PAUSE_NOT, | 162 | FILE_PAUSE_NOT, |
163 | FILE_PAUSE_US, | 163 | FILE_PAUSE_US, |
164 | FILE_PAUSE_OTHER, | 164 | FILE_PAUSE_OTHER, |
165 | FILE_PAUSE_BOTH | 165 | FILE_PAUSE_BOTH |
166 | }; | 166 | } File_Pause; |
167 | 167 | ||
168 | enum { | 168 | typedef enum Filecontrol { |
169 | FILECONTROL_ACCEPT, | 169 | FILECONTROL_ACCEPT, |
170 | FILECONTROL_PAUSE, | 170 | FILECONTROL_PAUSE, |
171 | FILECONTROL_KILL, | 171 | FILECONTROL_KILL, |
172 | FILECONTROL_SEEK | 172 | FILECONTROL_SEEK |
173 | }; | 173 | } Filecontrol; |
174 | 174 | ||
175 | enum { | 175 | typedef enum Filekind { |
176 | FILEKIND_DATA, | 176 | FILEKIND_DATA, |
177 | FILEKIND_AVATAR | 177 | FILEKIND_AVATAR |
178 | }; | 178 | } Filekind; |
179 | 179 | ||
180 | 180 | ||
181 | typedef struct Messenger Messenger; | 181 | typedef struct Messenger Messenger; |
182 | 182 | ||
183 | typedef void m_self_connection_status_cb(Messenger *, unsigned int, void *); | 183 | typedef void m_self_connection_status_cb(Messenger *m, unsigned int connection_status, void *user_data); |
184 | typedef void m_friend_status_cb(Messenger *, uint32_t, unsigned int, void *); | 184 | typedef void m_friend_status_cb(Messenger *m, uint32_t friend_number, unsigned int status, void *user_data); |
185 | typedef void m_friend_connection_status_cb(Messenger *, uint32_t, unsigned int, void *); | 185 | typedef void m_friend_connection_status_cb(Messenger *m, uint32_t friend_number, unsigned int connection_status, |
186 | typedef void m_friend_message_cb(Messenger *, uint32_t, unsigned int, const uint8_t *, size_t, void *); | 186 | void *user_data); |
187 | typedef void m_file_recv_control_cb(Messenger *, uint32_t, uint32_t, unsigned int, void *); | 187 | typedef void m_friend_message_cb(Messenger *m, uint32_t friend_number, unsigned int message_type, |
188 | typedef void m_friend_request_cb(Messenger *, const uint8_t *, const uint8_t *, size_t, void *); | 188 | const uint8_t *message, size_t length, void *user_data); |
189 | typedef void m_friend_name_cb(Messenger *m, uint32_t, const uint8_t *, size_t, void *); | 189 | typedef void m_file_recv_control_cb(Messenger *m, uint32_t friend_number, uint32_t file_number, unsigned int control, |
190 | typedef void m_friend_status_message_cb(Messenger *m, uint32_t, const uint8_t *, size_t, void *); | 190 | void *user_data); |
191 | typedef void m_friend_typing_cb(Messenger *m, uint32_t, bool, void *); | 191 | typedef void m_friend_request_cb(Messenger *m, const uint8_t *public_key, const uint8_t *message, size_t length, |
192 | typedef void m_friend_read_receipt_cb(Messenger *m, uint32_t, uint32_t, void *); | 192 | void *user_data); |
193 | typedef void m_file_recv_cb(Messenger *m, uint32_t, uint32_t, uint32_t, uint64_t, const uint8_t *, size_t, void *); | 193 | typedef void m_friend_name_cb(Messenger *m, uint32_t friend_number, const uint8_t *name, size_t length, |
194 | typedef void m_file_chunk_request_cb(Messenger *m, uint32_t, uint32_t, uint64_t, size_t, void *); | 194 | void *user_data); |
195 | typedef void m_file_recv_chunk_cb(Messenger *m, uint32_t, uint32_t, uint64_t, const uint8_t *, size_t, void *); | 195 | typedef void m_friend_status_message_cb(Messenger *m, uint32_t friend_number, const uint8_t *message, size_t length, |
196 | typedef void m_friend_lossy_packet_cb(Messenger *m, uint32_t, const uint8_t *, size_t, void *); | 196 | void *user_data); |
197 | typedef void m_friend_lossless_packet_cb(Messenger *m, uint32_t, const uint8_t *, size_t, void *); | 197 | typedef void m_friend_typing_cb(Messenger *m, uint32_t friend_number, bool is_typing, void *user_data); |
198 | typedef void m_friend_connectionstatuschange_internal_cb(Messenger *m, uint32_t, uint8_t, void *); | 198 | typedef void m_friend_read_receipt_cb(Messenger *m, uint32_t friend_number, uint32_t message_id, void *user_data); |
199 | typedef void m_conference_invite_cb(Messenger *m, uint32_t, const uint8_t *, uint16_t, void *); | 199 | typedef void m_file_recv_cb(Messenger *m, uint32_t friend_number, uint32_t file_number, uint32_t kind, |
200 | typedef void m_msi_packet_cb(Messenger *m, uint32_t, const uint8_t *, uint16_t, void *); | 200 | uint64_t file_size, const uint8_t *filename, size_t filename_length, void *user_data); |
201 | typedef void m_file_chunk_request_cb(Messenger *m, uint32_t friend_number, uint32_t file_number, uint64_t position, | ||
202 | size_t length, void *user_data); | ||
203 | typedef void m_file_recv_chunk_cb(Messenger *m, uint32_t friend_number, uint32_t file_number, uint64_t position, | ||
204 | const uint8_t *data, size_t length, void *user_data); | ||
205 | typedef void m_friend_lossy_packet_cb(Messenger *m, uint32_t friend_number, const uint8_t *data, size_t length, | ||
206 | void *user_data); | ||
207 | typedef void m_friend_lossless_packet_cb(Messenger *m, uint32_t friend_number, const uint8_t *data, size_t length, | ||
208 | void *user_data); | ||
209 | typedef void m_friend_connectionstatuschange_internal_cb(Messenger *m, uint32_t friend_number, | ||
210 | uint8_t connection_status, void *user_data); | ||
211 | typedef void m_conference_invite_cb(Messenger *m, uint32_t friend_number, const uint8_t *cookie, uint16_t length, | ||
212 | void *user_data); | ||
213 | typedef void m_msi_packet_cb(Messenger *m, uint32_t friend_number, const uint8_t *data, uint16_t length, | ||
214 | void *user_data); | ||
201 | typedef int m_lossy_rtp_packet_cb(Messenger *m, uint32_t friendnumber, const uint8_t *data, uint16_t len, void *object); | 215 | typedef int m_lossy_rtp_packet_cb(Messenger *m, uint32_t friendnumber, const uint8_t *data, uint16_t len, void *object); |
202 | 216 | ||
203 | typedef struct { | 217 | typedef struct RTP_Packet_Handler { |
218 | m_lossy_rtp_packet_cb *function; | ||
219 | void *object; | ||
220 | } RTP_Packet_Handler; | ||
221 | |||
222 | typedef struct Friend { | ||
204 | uint8_t real_pk[CRYPTO_PUBLIC_KEY_SIZE]; | 223 | uint8_t real_pk[CRYPTO_PUBLIC_KEY_SIZE]; |
205 | int friendcon_id; | 224 | int friendcon_id; |
206 | 225 | ||
@@ -228,10 +247,7 @@ typedef struct { | |||
228 | uint32_t num_sending_files; | 247 | uint32_t num_sending_files; |
229 | struct File_Transfers file_receiving[MAX_CONCURRENT_FILE_PIPES]; | 248 | struct File_Transfers file_receiving[MAX_CONCURRENT_FILE_PIPES]; |
230 | 249 | ||
231 | struct { | 250 | RTP_Packet_Handler lossy_rtp_packethandlers[PACKET_LOSSY_AV_RESERVED]; |
232 | m_lossy_rtp_packet_cb *function; | ||
233 | void *object; | ||
234 | } lossy_rtp_packethandlers[PACKET_LOSSY_AV_RESERVED]; | ||
235 | 251 | ||
236 | struct Receipts *receipts_start; | 252 | struct Receipts *receipts_start; |
237 | struct Receipts *receipts_end; | 253 | struct Receipts *receipts_end; |
@@ -494,37 +510,35 @@ void m_callback_log(Messenger *m, logger_cb *function, void *context, void *user | |||
494 | /* Set the function that will be executed when a friend request is received. | 510 | /* Set the function that will be executed when a friend request is received. |
495 | * Function format is function(uint8_t * public_key, uint8_t * data, size_t length) | 511 | * Function format is function(uint8_t * public_key, uint8_t * data, size_t length) |
496 | */ | 512 | */ |
497 | void m_callback_friendrequest(Messenger *m, void (*function)(Messenger *m, const uint8_t *, const uint8_t *, size_t, | 513 | void m_callback_friendrequest(Messenger *m, m_friend_request_cb *function); |
498 | void *)); | ||
499 | 514 | ||
500 | /* Set the function that will be executed when a message from a friend is received. | 515 | /* Set the function that will be executed when a message from a friend is received. |
501 | * Function format is: function(uint32_t friendnumber, unsigned int type, uint8_t * message, uint32_t length) | 516 | * Function format is: function(uint32_t friendnumber, unsigned int type, uint8_t * message, uint32_t length) |
502 | */ | 517 | */ |
503 | void m_callback_friendmessage(Messenger *m, void (*function)(Messenger *m, uint32_t, unsigned int, const uint8_t *, | 518 | void m_callback_friendmessage(Messenger *m, m_friend_message_cb *function); |
504 | size_t, void *)); | ||
505 | 519 | ||
506 | /* Set the callback for name changes. | 520 | /* Set the callback for name changes. |
507 | * Function(uint32_t friendnumber, uint8_t *newname, size_t length) | 521 | * Function(uint32_t friendnumber, uint8_t *newname, size_t length) |
508 | * You are not responsible for freeing newname. | 522 | * You are not responsible for freeing newname. |
509 | */ | 523 | */ |
510 | void m_callback_namechange(Messenger *m, void (*function)(Messenger *m, uint32_t, const uint8_t *, size_t, void *)); | 524 | void m_callback_namechange(Messenger *m, m_friend_name_cb *function); |
511 | 525 | ||
512 | /* Set the callback for status message changes. | 526 | /* Set the callback for status message changes. |
513 | * Function(uint32_t friendnumber, uint8_t *newstatus, size_t length) | 527 | * Function(uint32_t friendnumber, uint8_t *newstatus, size_t length) |
514 | * | 528 | * |
515 | * You are not responsible for freeing newstatus | 529 | * You are not responsible for freeing newstatus |
516 | */ | 530 | */ |
517 | void m_callback_statusmessage(Messenger *m, void (*function)(Messenger *m, uint32_t, const uint8_t *, size_t, void *)); | 531 | void m_callback_statusmessage(Messenger *m, m_friend_status_message_cb *function); |
518 | 532 | ||
519 | /* Set the callback for status type changes. | 533 | /* Set the callback for status type changes. |
520 | * Function(uint32_t friendnumber, Userstatus kind) | 534 | * Function(uint32_t friendnumber, Userstatus kind) |
521 | */ | 535 | */ |
522 | void m_callback_userstatus(Messenger *m, void (*function)(Messenger *m, uint32_t, unsigned int, void *)); | 536 | void m_callback_userstatus(Messenger *m, m_friend_status_cb *function); |
523 | 537 | ||
524 | /* Set the callback for typing changes. | 538 | /* Set the callback for typing changes. |
525 | * Function(uint32_t friendnumber, uint8_t is_typing) | 539 | * Function(uint32_t friendnumber, uint8_t is_typing) |
526 | */ | 540 | */ |
527 | void m_callback_typingchange(Messenger *m, void(*function)(Messenger *m, uint32_t, bool, void *)); | 541 | void m_callback_typingchange(Messenger *m, m_friend_typing_cb *function); |
528 | 542 | ||
529 | /* Set the callback for read receipts. | 543 | /* Set the callback for read receipts. |
530 | * Function(uint32_t friendnumber, uint32_t receipt) | 544 | * Function(uint32_t friendnumber, uint32_t receipt) |
@@ -535,7 +549,7 @@ void m_callback_typingchange(Messenger *m, void(*function)(Messenger *m, uint32_ | |||
535 | * Since core doesn't track ids for you, receipt may not correspond to any message. | 549 | * Since core doesn't track ids for you, receipt may not correspond to any message. |
536 | * In that case, you should discard it. | 550 | * In that case, you should discard it. |
537 | */ | 551 | */ |
538 | void m_callback_read_receipt(Messenger *m, void (*function)(Messenger *m, uint32_t, uint32_t, void *)); | 552 | void m_callback_read_receipt(Messenger *m, m_friend_read_receipt_cb *function); |
539 | 553 | ||
540 | /* Set the callback for connection status changes. | 554 | /* Set the callback for connection status changes. |
541 | * function(uint32_t friendnumber, uint8_t status) | 555 | * function(uint32_t friendnumber, uint8_t status) |
@@ -548,17 +562,17 @@ void m_callback_read_receipt(Messenger *m, void (*function)(Messenger *m, uint32 | |||
548 | * being previously online" part. | 562 | * being previously online" part. |
549 | * It's assumed that when adding friends, their connection status is offline. | 563 | * It's assumed that when adding friends, their connection status is offline. |
550 | */ | 564 | */ |
551 | void m_callback_connectionstatus(Messenger *m, void (*function)(Messenger *m, uint32_t, unsigned int, void *)); | 565 | void m_callback_connectionstatus(Messenger *m, m_friend_connection_status_cb *function); |
552 | 566 | ||
553 | /* Same as previous but for internal A/V core usage only */ | 567 | /* Same as previous but for internal A/V core usage only */ |
554 | void m_callback_connectionstatus_internal_av(Messenger *m, void (*function)(Messenger *m, uint32_t, uint8_t, void *), | 568 | void m_callback_connectionstatus_internal_av(Messenger *m, m_friend_connectionstatuschange_internal_cb *function, |
555 | void *userdata); | 569 | void *userdata); |
556 | 570 | ||
557 | 571 | ||
558 | /* Set the callback for typing changes. | 572 | /* Set the callback for typing changes. |
559 | * Function(unsigned int connection_status (0 = not connected, 1 = TCP only, 2 = UDP + TCP)) | 573 | * Function(unsigned int connection_status (0 = not connected, 1 = TCP only, 2 = UDP + TCP)) |
560 | */ | 574 | */ |
561 | void m_callback_core_connection(Messenger *m, void (*function)(Messenger *m, unsigned int, void *)); | 575 | void m_callback_core_connection(Messenger *m, m_self_connection_status_cb *function); |
562 | 576 | ||
563 | /**********CONFERENCES************/ | 577 | /**********CONFERENCES************/ |
564 | 578 | ||
@@ -566,8 +580,7 @@ void m_callback_core_connection(Messenger *m, void (*function)(Messenger *m, uns | |||
566 | * | 580 | * |
567 | * Function(Messenger *m, uint32_t friendnumber, uint8_t *data, uint16_t length, void *userdata) | 581 | * Function(Messenger *m, uint32_t friendnumber, uint8_t *data, uint16_t length, void *userdata) |
568 | */ | 582 | */ |
569 | void m_callback_conference_invite(Messenger *m, void (*function)(Messenger *m, uint32_t, const uint8_t *, uint16_t, | 583 | void m_callback_conference_invite(Messenger *m, m_conference_invite_cb *function); |
570 | void *)); | ||
571 | 584 | ||
572 | /* Send a conference invite packet. | 585 | /* Send a conference invite packet. |
573 | * | 586 | * |
@@ -583,8 +596,7 @@ int send_conference_invite_packet(const Messenger *m, int32_t friendnumber, cons | |||
583 | * | 596 | * |
584 | * Function(Tox *tox, uint32_t friendnumber, uint32_t filenumber, uint32_t filetype, uint64_t filesize, uint8_t *filename, size_t filename_length, void *userdata) | 597 | * Function(Tox *tox, uint32_t friendnumber, uint32_t filenumber, uint32_t filetype, uint64_t filesize, uint8_t *filename, size_t filename_length, void *userdata) |
585 | */ | 598 | */ |
586 | void callback_file_sendrequest(Messenger *m, void (*function)(Messenger *m, uint32_t, uint32_t, uint32_t, uint64_t, | 599 | void callback_file_sendrequest(Messenger *m, m_file_recv_cb *function); |
587 | const uint8_t *, size_t, void *)); | ||
588 | 600 | ||
589 | 601 | ||
590 | /* Set the callback for file control requests. | 602 | /* Set the callback for file control requests. |
@@ -592,22 +604,21 @@ void callback_file_sendrequest(Messenger *m, void (*function)(Messenger *m, uin | |||
592 | * Function(Tox *tox, uint32_t friendnumber, uint32_t filenumber, unsigned int control_type, void *userdata) | 604 | * Function(Tox *tox, uint32_t friendnumber, uint32_t filenumber, unsigned int control_type, void *userdata) |
593 | * | 605 | * |
594 | */ | 606 | */ |
595 | void callback_file_control(Messenger *m, void (*function)(Messenger *m, uint32_t, uint32_t, unsigned int, void *)); | 607 | void callback_file_control(Messenger *m, m_file_recv_control_cb *function); |
596 | 608 | ||
597 | /* Set the callback for file data. | 609 | /* Set the callback for file data. |
598 | * | 610 | * |
599 | * Function(Tox *tox, uint32_t friendnumber, uint32_t filenumber, uint64_t position, uint8_t *data, size_t length, void *userdata) | 611 | * Function(Tox *tox, uint32_t friendnumber, uint32_t filenumber, uint64_t position, uint8_t *data, size_t length, void *userdata) |
600 | * | 612 | * |
601 | */ | 613 | */ |
602 | void callback_file_data(Messenger *m, void (*function)(Messenger *m, uint32_t, uint32_t, uint64_t, const uint8_t *, | 614 | void callback_file_data(Messenger *m, m_file_recv_chunk_cb *function); |
603 | size_t, void *)); | ||
604 | 615 | ||
605 | /* Set the callback for file request chunk. | 616 | /* Set the callback for file request chunk. |
606 | * | 617 | * |
607 | * Function(Tox *tox, uint32_t friendnumber, uint32_t filenumber, uint64_t position, size_t length, void *userdata) | 618 | * Function(Tox *tox, uint32_t friendnumber, uint32_t filenumber, uint64_t position, size_t length, void *userdata) |
608 | * | 619 | * |
609 | */ | 620 | */ |
610 | void callback_file_reqchunk(Messenger *m, void (*function)(Messenger *m, uint32_t, uint32_t, uint64_t, size_t, void *)); | 621 | void callback_file_reqchunk(Messenger *m, m_file_chunk_request_cb *function); |
611 | 622 | ||
612 | 623 | ||
613 | /* Copy the file transfer file id to file_id | 624 | /* Copy the file transfer file id to file_id |
@@ -686,8 +697,7 @@ uint64_t file_dataremaining(const Messenger *m, int32_t friendnumber, uint8_t fi | |||
686 | * | 697 | * |
687 | * Function(Messenger *m, uint32_t friendnumber, uint8_t *data, uint16_t length, void *userdata) | 698 | * Function(Messenger *m, uint32_t friendnumber, uint8_t *data, uint16_t length, void *userdata) |
688 | */ | 699 | */ |
689 | void m_callback_msi_packet(Messenger *m, void (*function)(Messenger *m, uint32_t, const uint8_t *, uint16_t, void *), | 700 | void m_callback_msi_packet(Messenger *m, m_msi_packet_cb *function, void *userdata); |
690 | void *userdata); | ||
691 | 701 | ||
692 | /* Send an msi packet. | 702 | /* Send an msi packet. |
693 | * | 703 | * |
@@ -701,16 +711,15 @@ int m_msi_packet(const Messenger *m, int32_t friendnumber, const uint8_t *data, | |||
701 | * return -1 on failure. | 711 | * return -1 on failure. |
702 | * return 0 on success. | 712 | * return 0 on success. |
703 | */ | 713 | */ |
704 | int m_callback_rtp_packet(Messenger *m, int32_t friendnumber, uint8_t byte, int (*packet_handler_callback)(Messenger *m, | 714 | int m_callback_rtp_packet(Messenger *m, int32_t friendnumber, uint8_t byte, |
705 | uint32_t friendnumber, const uint8_t *data, uint16_t len, void *object), void *object); | 715 | m_lossy_rtp_packet_cb *packet_handler_callback, void *object); |
706 | 716 | ||
707 | /**********************************************/ | 717 | /**********************************************/ |
708 | 718 | ||
709 | /* Set handlers for custom lossy packets. | 719 | /* Set handlers for custom lossy packets. |
710 | * | 720 | * |
711 | */ | 721 | */ |
712 | void custom_lossy_packet_registerhandler(Messenger *m, void (*packet_handler_callback)(Messenger *m, | 722 | void custom_lossy_packet_registerhandler(Messenger *m, m_friend_lossy_packet_cb *packet_handler_callback); |
713 | uint32_t friendnumber, const uint8_t *data, size_t len, void *object)); | ||
714 | 723 | ||
715 | /* High level function to send custom lossy packets. | 724 | /* High level function to send custom lossy packets. |
716 | * | 725 | * |
@@ -727,8 +736,7 @@ int m_send_custom_lossy_packet(const Messenger *m, int32_t friendnumber, const u | |||
727 | /* Set handlers for custom lossless packets. | 736 | /* Set handlers for custom lossless packets. |
728 | * | 737 | * |
729 | */ | 738 | */ |
730 | void custom_lossless_packet_registerhandler(Messenger *m, void (*packet_handler_callback)(Messenger *m, | 739 | void custom_lossless_packet_registerhandler(Messenger *m, m_friend_lossless_packet_cb *packet_handler_callback); |
731 | uint32_t friendnumber, const uint8_t *data, size_t len, void *object)); | ||
732 | 740 | ||
733 | /* High level function to send custom lossless packets. | 741 | /* High level function to send custom lossless packets. |
734 | * | 742 | * |
@@ -743,12 +751,12 @@ int send_custom_lossless_packet(const Messenger *m, int32_t friendnumber, const | |||
743 | 751 | ||
744 | /**********************************************/ | 752 | /**********************************************/ |
745 | 753 | ||
746 | enum { | 754 | typedef enum Messenger_Error { |
747 | MESSENGER_ERROR_NONE, | 755 | MESSENGER_ERROR_NONE, |
748 | MESSENGER_ERROR_PORT, | 756 | MESSENGER_ERROR_PORT, |
749 | MESSENGER_ERROR_TCP_SERVER, | 757 | MESSENGER_ERROR_TCP_SERVER, |
750 | MESSENGER_ERROR_OTHER | 758 | MESSENGER_ERROR_OTHER |
751 | }; | 759 | } Messenger_Error; |
752 | 760 | ||
753 | /* Run this at startup. | 761 | /* Run this at startup. |
754 | * return allocated instance of Messenger on success. | 762 | * return allocated instance of Messenger on success. |