diff options
author | irungentoo <irungentoo@gmail.com> | 2013-08-13 04:14:01 -0700 |
---|---|---|
committer | irungentoo <irungentoo@gmail.com> | 2013-08-13 04:14:01 -0700 |
commit | cb4f67b37a1a5070387c27d475c23366645bc1cf (patch) | |
tree | dd8d64ea8814f7a26a0838a0a2e9508f62a18e95 /core/Messenger.c | |
parent | 4cc4e79088c3478e1d50606006a39c2c872da0db (diff) | |
parent | 471c14809004bd0ac531cbb79b06906f128cb666 (diff) |
Merge pull request #441 from slvr/timer
Timer Subsystem
Diffstat (limited to 'core/Messenger.c')
-rw-r--r-- | core/Messenger.c | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/core/Messenger.c b/core/Messenger.c index 1c81163c..af102406 100644 --- a/core/Messenger.c +++ b/core/Messenger.c | |||
@@ -22,6 +22,8 @@ | |||
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include "Messenger.h" | 24 | #include "Messenger.h" |
25 | #include "timer.h" | ||
26 | |||
25 | #define MIN(a,b) (((a)<(b))?(a):(b)) | 27 | #define MIN(a,b) (((a)<(b))?(a):(b)) |
26 | 28 | ||
27 | static void set_friend_status(Messenger *m, int friendnumber, uint8_t status); | 29 | static void set_friend_status(Messenger *m, int friendnumber, uint8_t status); |
@@ -488,7 +490,20 @@ int write_cryptpacket_id(Messenger *m, int friendnumber, uint8_t packet_id, uint | |||
488 | return write_cryptpacket(m->friendlist[friendnumber].crypt_connection_id, packet, length + 1); | 490 | return write_cryptpacket(m->friendlist[friendnumber].crypt_connection_id, packet, length + 1); |
489 | } | 491 | } |
490 | 492 | ||
493 | |||
494 | /*Interval in seconds between LAN discovery packet sending*/ | ||
495 | #define LAN_DISCOVERY_INTERVAL 60 | ||
496 | |||
491 | #define PORT 33445 | 497 | #define PORT 33445 |
498 | |||
499 | /*Send a LAN discovery packet every LAN_DISCOVERY_INTERVAL seconds*/ | ||
500 | int LANdiscovery(timer* t, void* arg) | ||
501 | { | ||
502 | send_LANdiscovery(htons(PORT)); | ||
503 | timer_start(t, LAN_DISCOVERY_INTERVAL); | ||
504 | return 0; | ||
505 | } | ||
506 | |||
492 | /* run this at startup */ | 507 | /* run this at startup */ |
493 | Messenger * initMessenger(void) | 508 | Messenger * initMessenger(void) |
494 | { | 509 | { |
@@ -510,6 +525,8 @@ Messenger * initMessenger(void) | |||
510 | friendreq_init(); | 525 | friendreq_init(); |
511 | LANdiscovery_init(); | 526 | LANdiscovery_init(); |
512 | 527 | ||
528 | timer_single(&LANdiscovery, 0, LAN_DISCOVERY_INTERVAL); | ||
529 | |||
513 | return m; | 530 | return m; |
514 | } | 531 | } |
515 | 532 | ||
@@ -668,20 +685,6 @@ void doInbound(Messenger *m) | |||
668 | } | 685 | } |
669 | } | 686 | } |
670 | 687 | ||
671 | /*Interval in seconds between LAN discovery packet sending*/ | ||
672 | #define LAN_DISCOVERY_INTERVAL 60 | ||
673 | |||
674 | static uint64_t last_LANdiscovery; | ||
675 | |||
676 | /*Send a LAN discovery packet every LAN_DISCOVERY_INTERVAL seconds*/ | ||
677 | void LANdiscovery(Messenger *m) | ||
678 | { | ||
679 | if (last_LANdiscovery + LAN_DISCOVERY_INTERVAL < unix_time()) { | ||
680 | send_LANdiscovery(htons(PORT)); | ||
681 | last_LANdiscovery = unix_time(); | ||
682 | } | ||
683 | } | ||
684 | |||
685 | 688 | ||
686 | /* the main loop that needs to be run at least 200 times per second. */ | 689 | /* the main loop that needs to be run at least 200 times per second. */ |
687 | void doMessenger(Messenger *m) | 690 | void doMessenger(Messenger *m) |
@@ -693,7 +696,8 @@ void doMessenger(Messenger *m) | |||
693 | doNetCrypto(); | 696 | doNetCrypto(); |
694 | doInbound(m); | 697 | doInbound(m); |
695 | doFriends(m); | 698 | doFriends(m); |
696 | LANdiscovery(m); | 699 | |
700 | timer_poll(); | ||
697 | } | 701 | } |
698 | 702 | ||
699 | /* returns the size of the messenger data (for saving) */ | 703 | /* returns the size of the messenger data (for saving) */ |