diff --git a/src/example.c b/src/example.c index 5d94b16..067515a 100644 --- a/src/example.c +++ b/src/example.c @@ -6,36 +6,20 @@ BOOT(init); -void eventHandler(event_t event) { - fprintf(stderr, "Got event %d.\n", event); -} -void shutdownHandler(event_t event) { - fprintf(stderr, "Shuting down.\n"); -} - -void intervalHandler() { - static int count = 0; - count++; - fprintf(stderr, "interval count %d.\n", count); - if (count > 4) { - fprintf(stderr, "Provoking error.\n"); - boot.events.enableSignal(SHUTDOWN); // SHUTDOWN is not a signal - } -} - void init() { printf("Hello World!\n"); boot.mode = WAIT; boot.debug = true; - boot.events.addEventListener(SHUTDOWN, shutdownHandler); - boot.events.addEventListener(SIGUSR1, eventHandler); + boot.events.addEventListener(SHUTDOWN, lambda(void, (event_t event) { + fprintf(stderr, "Shuting down.\n"); + })); + boot.events.addEventListener(SIGUSR1, lambda(void, (event_t event) { + fprintf(stderr, "Got SIGUSR1.\n"); + })); boot.events.enableSignal(SIGUSR1); timer_t timer = boot.time.createSignalTimer(SIGUSR1); - boot.time.startTimer(timer, 5000); - - timer_t interval = boot.time.createThreadTimer(&intervalHandler); - boot.time.startInterval(interval, 2000); + boot.time.startTimer(timer, 1000); } diff --git a/src/seaboot.h b/src/seaboot.h index aedbcb1..8e200aa 100644 --- a/src/seaboot.h +++ b/src/seaboot.h @@ -4,6 +4,8 @@ #include #include +#define lambda(r, f) ({r __fn__ f __fn__; }) + #define EXIT_SUCCESS 0 #define EXIT_ERROR 3