BadVPN – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 /**
2 * @file btimer_example.c
3 * @author Ambroz Bizjak <ambrop7@gmail.com>
4 *
5 * @section LICENSE
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. Neither the name of the author nor the
15 * names of its contributors may be used to endorse or promote products
16 * derived from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29  
30 #include <stdio.h>
31 #include <stdlib.h>
32 #include <time.h>
33  
34 #include <system/BReactor.h>
35 #include <base/BLog.h>
36 #include <system/BTime.h>
37  
38 // gives average firing rate 100kHz
39 #define TIMER_NUM 500
40 #define TIMER_MODULO 10
41  
42 BReactor sys;
43  
44 void handle_timer (BTimer *bt)
45 {
46 #ifdef BADVPN_USE_WINAPI
47 btime_t time = btime_gettime() + rand()%TIMER_MODULO;
48 #else
49 btime_t time = btime_gettime() + random()%TIMER_MODULO;
50 #endif
51 BReactor_SetTimerAbsolute(&sys, bt, time);
52 }
53  
54 int main ()
55 {
56 BLog_InitStdout();
57  
58 #ifdef BADVPN_USE_WINAPI
59 srand(time(NULL));
60 #else
61 srandom(time(NULL));
62 #endif
63  
64 // init time
65 BTime_Init();
66  
67 if (!BReactor_Init(&sys)) {
68 DEBUG("BReactor_Init failed");
69 return 1;
70 }
71  
72 BTimer timers[TIMER_NUM];
73  
74 int i;
75 for (i=0; i<TIMER_NUM; i++) {
76 BTimer *timer = &timers[i];
77 BTimer_Init(timer, 0, (BTimer_handler)handle_timer, timer);
78 BReactor_SetTimer(&sys, timer);
79 }
80  
81 int ret = BReactor_Exec(&sys);
82 BReactor_Free(&sys);
83 return ret;
84 }