X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=tr%2Ftr_main.c;fp=tr%2Ftr_main.c;h=1968bde7cb099d9c80498ced9d2071c44e35d04c;hb=f2a0124ebf37803b591c8a989acbef2c5c83a5c3;hp=8c8202d9d43787ed5452533a410f8cc01b89efcd;hpb=98be752015619fab5d29405bea10158a0e26d044;p=trust_router.git diff --git a/tr/tr_main.c b/tr/tr_main.c index 8c8202d..1968bde 100644 --- a/tr/tr_main.c +++ b/tr/tr_main.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -150,6 +151,18 @@ static void configure_signals(void) pthread_sigmask(SIG_BLOCK, &signals, NULL); } +/* TODO move this function */ +static json_t *tr_mon_handle_version(void *cookie) +{ + return json_string(PACKAGE_VERSION); +} + +static json_t *tr_mon_handle_uptime(void *cookie) +{ + time_t *start_time = cookie; + return json_integer(time(NULL) - (*start_time)); +} + int main(int argc, char *argv[]) { TALLOC_CTX *main_ctx=NULL; @@ -161,6 +174,8 @@ int main(int argc, char *argv[]) struct tr_socket_event mon_ev = {0}; struct event *cfgwatch_ev; + time_t start_time = time(NULL); /* TODO move this? */ + configure_signals(); /* we're going to be multithreaded, so disable null context tracking */ @@ -219,6 +234,10 @@ int main(int argc, char *argv[]) tr->mons->tids = tr->tids; tr->mons->trps = tr->trps; + /* TODO do this more systematically */ + mons_register_handler(tr->mons, MON_CMD_SHOW, OPT_TYPE_SHOW_VERSION, tr_mon_handle_version, NULL); + mons_register_handler(tr->mons, MON_CMD_SHOW, OPT_TYPE_SHOW_UPTIME, tr_mon_handle_uptime, &start_time); + /***** process configuration *****/ tr->cfgwatch=tr_cfgwatch_create(tr); if (tr->cfgwatch == NULL) {