|
|
|
@ -21,6 +21,8 @@ |
|
|
|
*/ |
|
|
|
|
|
|
|
#include <stdint.h> |
|
|
|
#include <signal.h> |
|
|
|
#include <stdio.h> |
|
|
|
|
|
|
|
#include "trbase.h" |
|
|
|
#include "trdata.h" |
|
|
|
@ -28,6 +30,35 @@ |
|
|
|
#include "tr/event_handler.h" |
|
|
|
#include "tr/event_dispatcher.h" |
|
|
|
|
|
|
|
volatile TR_EventDispatcher _TR_controlDispatcher; |
|
|
|
|
|
|
|
static |
|
|
|
void |
|
|
|
terminate(int signum) |
|
|
|
{ |
|
|
|
signal(signum, SIG_IGN); |
|
|
|
/* |
|
|
|
* \todo do logging here |
|
|
|
*/ |
|
|
|
puts("signal ... go"); |
|
|
|
TR_eventDispatcherShutdown(_TR_controlDispatcher); |
|
|
|
} |
|
|
|
|
|
|
|
static |
|
|
|
void |
|
|
|
init_signals(void) |
|
|
|
{ |
|
|
|
signal(SIGTERM, terminate); |
|
|
|
signal(SIGHUP, SIG_IGN); |
|
|
|
signal(SIGINT, terminate); |
|
|
|
signal(SIGQUIT, terminate); |
|
|
|
signal(SIGABRT, terminate); |
|
|
|
signal(SIGALRM, SIG_IGN); |
|
|
|
signal(SIGURG, SIG_IGN); |
|
|
|
|
|
|
|
signal(SIGPIPE, SIG_IGN); |
|
|
|
} |
|
|
|
|
|
|
|
static |
|
|
|
int |
|
|
|
eventDispatcherCtor(void * _this, va_list * params) { |
|
|
|
@ -41,6 +72,11 @@ eventDispatcherCtor(void * _this, va_list * params) { |
|
|
|
this->heartbeat = 0; |
|
|
|
this->nextbeat = 0; |
|
|
|
|
|
|
|
if (! _TR_controlDispatcher) { |
|
|
|
_TR_controlDispatcher = this; |
|
|
|
init_signals(); |
|
|
|
} |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
|