summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2014-12-09 16:39:52 -0500
committerirungentoo <irungentoo@gmail.com>2014-12-09 16:39:52 -0500
commit7d27893f1a3c9b19a8c4effcb0eb357a9eedd174 (patch)
tree290838c5de60d2632c2b662bcdec52d0a11be062
parent668ab80a49533f90ac9dc9bbb49b10a0ffdf8b27 (diff)
parentd595a28b494ee2e3c06824f9263fec4dea408658 (diff)
Merge branch 'more_consistent_custom_packet_handlers' of https://github.com/wrouesnel/toxcore
-rw-r--r--auto_tests/tox_test.c3
-rw-r--r--toxav/rtp.c2
-rw-r--r--toxcore/Messenger.c12
-rw-r--r--toxcore/Messenger.h16
-rw-r--r--toxcore/tox.c6
-rw-r--r--toxcore/tox.h6
6 files changed, 29 insertions, 16 deletions
diff --git a/auto_tests/tox_test.c b/auto_tests/tox_test.c
index 65364ea8..b99c5c57 100644
--- a/auto_tests/tox_test.c
+++ b/auto_tests/tox_test.c
@@ -70,7 +70,8 @@ void print_typingchange(Tox *m, int friendnumber, uint8_t typing, void *userdata
70 70
71uint32_t custom_packet; 71uint32_t custom_packet;
72 72
73int handle_custom_packet(void *object, const uint8_t *data, uint32_t len) 73int handle_custom_packet(Tox *m, uint32_t friend_num, const uint8_t *data,
74 uint32_t len, void *object)
74{ 75{
75 uint8_t number = *((uint32_t *)object); 76 uint8_t number = *((uint32_t *)object);
76 77
diff --git a/toxav/rtp.c b/toxav/rtp.c
index 6eb61a81..2af89ebf 100644
--- a/toxav/rtp.c
+++ b/toxav/rtp.c
@@ -341,7 +341,7 @@ RTPMessage *msg_parse ( const uint8_t *data, int length )
341/** 341/**
342 * Callback for networking core. 342 * Callback for networking core.
343 */ 343 */
344int rtp_handle_packet ( void *object, const uint8_t *data, uint32_t length ) 344int rtp_handle_packet ( Messenger *m, int32_t friendnumber, const uint8_t *data, uint32_t length, void *object )
345{ 345{
346 RTPSession *session = object; 346 RTPSession *session = object;
347 RTPMessage *msg; 347 RTPMessage *msg;
diff --git a/toxcore/Messenger.c b/toxcore/Messenger.c
index 704a34b4..7d93b2da 100644
--- a/toxcore/Messenger.c
+++ b/toxcore/Messenger.c
@@ -1441,13 +1441,15 @@ static int handle_custom_lossy_packet(void *object, int friend_num, const uint8_
1441 1441
1442 if (m->friendlist[friend_num].lossy_packethandlers[packet[0] % PACKET_ID_LOSSY_RANGE_SIZE].function) 1442 if (m->friendlist[friend_num].lossy_packethandlers[packet[0] % PACKET_ID_LOSSY_RANGE_SIZE].function)
1443 return m->friendlist[friend_num].lossy_packethandlers[packet[0] % PACKET_ID_LOSSY_RANGE_SIZE].function( 1443 return m->friendlist[friend_num].lossy_packethandlers[packet[0] % PACKET_ID_LOSSY_RANGE_SIZE].function(
1444 m->friendlist[friend_num].lossy_packethandlers[packet[0] % PACKET_ID_LOSSY_RANGE_SIZE].object, packet, length); 1444 m, friend_num, packet, length, m->friendlist[friend_num].lossy_packethandlers[packet[0] %
1445 PACKET_ID_LOSSY_RANGE_SIZE].object);
1445 1446
1446 return 1; 1447 return 1;
1447} 1448}
1448 1449
1449int custom_lossy_packet_registerhandler(Messenger *m, int32_t friendnumber, uint8_t byte, 1450int custom_lossy_packet_registerhandler(Messenger *m, int32_t friendnumber, uint8_t byte,
1450 int (*packet_handler_callback)(void *object, const uint8_t *data, uint32_t len), void *object) 1451 int (*packet_handler_callback)(Messenger *m, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object),
1452 void *object)
1451{ 1453{
1452 if (friend_not_valid(m, friendnumber)) 1454 if (friend_not_valid(m, friendnumber))
1453 return -1; 1455 return -1;
@@ -1490,13 +1492,15 @@ static int handle_custom_lossless_packet(void *object, int friend_num, const uin
1490 1492
1491 if (m->friendlist[friend_num].lossless_packethandlers[packet[0] % PACKET_ID_LOSSLESS_RANGE_SIZE].function) 1493 if (m->friendlist[friend_num].lossless_packethandlers[packet[0] % PACKET_ID_LOSSLESS_RANGE_SIZE].function)
1492 return m->friendlist[friend_num].lossless_packethandlers[packet[0] % PACKET_ID_LOSSLESS_RANGE_SIZE].function( 1494 return m->friendlist[friend_num].lossless_packethandlers[packet[0] % PACKET_ID_LOSSLESS_RANGE_SIZE].function(
1493 m->friendlist[friend_num].lossless_packethandlers[packet[0] % PACKET_ID_LOSSLESS_RANGE_SIZE].object, packet, length); 1495 m, friend_num, packet, length, m->friendlist[friend_num].lossless_packethandlers[packet[0] %
1496 PACKET_ID_LOSSLESS_RANGE_SIZE].object);
1494 1497
1495 return 1; 1498 return 1;
1496} 1499}
1497 1500
1498int custom_lossless_packet_registerhandler(Messenger *m, int32_t friendnumber, uint8_t byte, 1501int custom_lossless_packet_registerhandler(Messenger *m, int32_t friendnumber, uint8_t byte,
1499 int (*packet_handler_callback)(void *object, const uint8_t *data, uint32_t len), void *object) 1502 int (*packet_handler_callback)(Messenger *m, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object),
1503 void *object)
1500{ 1504{
1501 if (friend_not_valid(m, friendnumber)) 1505 if (friend_not_valid(m, friendnumber))
1502 return -1; 1506 return -1;
diff --git a/toxcore/Messenger.h b/toxcore/Messenger.h
index fd4646e9..ae6f54c6 100644
--- a/toxcore/Messenger.h
+++ b/toxcore/Messenger.h
@@ -189,6 +189,8 @@ enum {
189 FILECONTROL_RESUME_BROKEN 189 FILECONTROL_RESUME_BROKEN
190}; 190};
191 191
192typedef struct Messenger Messenger;
193
192typedef struct { 194typedef struct {
193 uint8_t client_id[crypto_box_PUBLICKEYBYTES]; 195 uint8_t client_id[crypto_box_PUBLICKEYBYTES];
194 int friendcon_id; 196 int friendcon_id;
@@ -222,18 +224,18 @@ typedef struct {
222 AVATAR_RECEIVEDATA *avatar_recv_data; // We are receiving avatar data from this friend. 224 AVATAR_RECEIVEDATA *avatar_recv_data; // We are receiving avatar data from this friend.
223 225
224 struct { 226 struct {
225 int (*function)(void *object, const uint8_t *data, uint32_t len); 227 int (*function)(Messenger *m, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object);
226 void *object; 228 void *object;
227 } lossy_packethandlers[PACKET_ID_LOSSY_RANGE_SIZE]; 229 } lossy_packethandlers[PACKET_ID_LOSSY_RANGE_SIZE];
228 230
229 struct { 231 struct {
230 int (*function)(void *object, const uint8_t *data, uint32_t len); 232 int (*function)(Messenger *m, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object);
231 void *object; 233 void *object;
232 } lossless_packethandlers[PACKET_ID_LOSSLESS_RANGE_SIZE]; 234 } lossless_packethandlers[PACKET_ID_LOSSLESS_RANGE_SIZE];
233} Friend; 235} Friend;
234 236
235 237
236typedef struct Messenger { 238struct Messenger {
237 239
238 Networking_Core *net; 240 Networking_Core *net;
239 Net_Crypto *net_crypto; 241 Net_Crypto *net_crypto;
@@ -310,7 +312,7 @@ typedef struct Messenger {
310 void *msi_packet_userdata; 312 void *msi_packet_userdata;
311 313
312 Messenger_Options options; 314 Messenger_Options options;
313} Messenger; 315};
314 316
315/* Format: [client_id (32 bytes)][nospam number (4 bytes)][checksum (2 bytes)] 317/* Format: [client_id (32 bytes)][nospam number (4 bytes)][checksum (2 bytes)]
316 * 318 *
@@ -841,7 +843,8 @@ int m_msi_packet(const Messenger *m, int32_t friendnumber, const uint8_t *data,
841 * return 0 on success. 843 * return 0 on success.
842 */ 844 */
843int custom_lossy_packet_registerhandler(Messenger *m, int32_t friendnumber, uint8_t byte, 845int custom_lossy_packet_registerhandler(Messenger *m, int32_t friendnumber, uint8_t byte,
844 int (*packet_handler_callback)(void *object, const uint8_t *data, uint32_t len), void *object); 846 int (*packet_handler_callback)(Messenger *m, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object),
847 void *object);
845 848
846/* High level function to send custom lossy packets. 849/* High level function to send custom lossy packets.
847 * 850 *
@@ -859,7 +862,8 @@ int send_custom_lossy_packet(const Messenger *m, int32_t friendnumber, const uin
859 * return 0 on success. 862 * return 0 on success.
860 */ 863 */
861int custom_lossless_packet_registerhandler(Messenger *m, int32_t friendnumber, uint8_t byte, 864int custom_lossless_packet_registerhandler(Messenger *m, int32_t friendnumber, uint8_t byte,
862 int (*packet_handler_callback)(void *object, const uint8_t *data, uint32_t len), void *object); 865 int (*packet_handler_callback)(Messenger *m, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object),
866 void *object);
863 867
864/* High level function to send custom lossless packets. 868/* High level function to send custom lossless packets.
865 * 869 *
diff --git a/toxcore/tox.c b/toxcore/tox.c
index 933f0f71..66587011 100644
--- a/toxcore/tox.c
+++ b/toxcore/tox.c
@@ -490,7 +490,8 @@ void tox_get_keys(Tox *tox, uint8_t *public_key, uint8_t *secret_key)
490 * return 0 on success. 490 * return 0 on success.
491 */ 491 */
492int tox_lossy_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte, 492int tox_lossy_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte,
493 int (*packet_handler_callback)(void *object, const uint8_t *data, uint32_t len), void *object) 493 int (*packet_handler_callback)(Messenger *tox, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object),
494 void *object)
494{ 495{
495 Messenger *m = tox; 496 Messenger *m = tox;
496 497
@@ -527,7 +528,8 @@ int tox_send_lossy_packet(const Tox *tox, int32_t friendnumber, const uint8_t *d
527 * return 0 on success. 528 * return 0 on success.
528 */ 529 */
529int tox_lossless_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte, 530int tox_lossless_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte,
530 int (*packet_handler_callback)(void *object, const uint8_t *data, uint32_t len), void *object) 531 int (*packet_handler_callback)(Messenger *tox, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object),
532 void *object)
531{ 533{
532 Messenger *m = tox; 534 Messenger *m = tox;
533 535
diff --git a/toxcore/tox.h b/toxcore/tox.h
index 58d86a83..b956a38f 100644
--- a/toxcore/tox.h
+++ b/toxcore/tox.h
@@ -385,7 +385,8 @@ void tox_get_keys(Tox *tox, uint8_t *public_key, uint8_t *secret_key);
385 * return 0 on success. 385 * return 0 on success.
386 */ 386 */
387int tox_lossy_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte, 387int tox_lossy_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte,
388 int (*packet_handler_callback)(void *object, const uint8_t *data, uint32_t len), void *object); 388 int (*packet_handler_callback)(Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object),
389 void *object);
389 390
390/* Function to send custom lossy packets. 391/* Function to send custom lossy packets.
391 * First byte of data must be in the range: 200-254. 392 * First byte of data must be in the range: 200-254.
@@ -405,7 +406,8 @@ int tox_send_lossy_packet(const Tox *tox, int32_t friendnumber, const uint8_t *d
405 * return 0 on success. 406 * return 0 on success.
406 */ 407 */
407int tox_lossless_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte, 408int tox_lossless_packet_registerhandler(Tox *tox, int32_t friendnumber, uint8_t byte,
408 int (*packet_handler_callback)(void *object, const uint8_t *data, uint32_t len), void *object); 409 int (*packet_handler_callback)(Tox *tox, int32_t friendnumber, const uint8_t *data, uint32_t len, void *object),
410 void *object);
409 411
410/* Function to send custom lossless packets. 412/* Function to send custom lossless packets.
411 * First byte of data must be in the range: 160-191. 413 * First byte of data must be in the range: 160-191.