summaryrefslogtreecommitdiff
path: root/core/Messenger.c
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2013-08-13 04:14:01 -0700
committerirungentoo <irungentoo@gmail.com>2013-08-13 04:14:01 -0700
commitcb4f67b37a1a5070387c27d475c23366645bc1cf (patch)
treedd8d64ea8814f7a26a0838a0a2e9508f62a18e95 /core/Messenger.c
parent4cc4e79088c3478e1d50606006a39c2c872da0db (diff)
parent471c14809004bd0ac531cbb79b06906f128cb666 (diff)
Merge pull request #441 from slvr/timer
Timer Subsystem
Diffstat (limited to 'core/Messenger.c')
-rw-r--r--core/Messenger.c34
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
27static void set_friend_status(Messenger *m, int friendnumber, uint8_t status); 29static 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*/
500int 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 */
493Messenger * initMessenger(void) 508Messenger * 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
674static uint64_t last_LANdiscovery;
675
676/*Send a LAN discovery packet every LAN_DISCOVERY_INTERVAL seconds*/
677void 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. */
687void doMessenger(Messenger *m) 690void 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) */