From 20799f78c2206ae840ff0b6f5d231c38795ef50a Mon Sep 17 00:00:00 2001 From: wangyu- Date: Sun, 3 Jun 2018 22:15:05 -0500 Subject: [PATCH] add signal handler --- common.cpp | 18 +++++++++++++++++- common.h | 1 + main.cpp | 30 ++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/common.cpp b/common.cpp index a344279..0766036 100644 --- a/common.cpp +++ b/common.cpp @@ -47,7 +47,7 @@ struct random_fd_t return random_number_fd; } }random_fd; - +/* u64_t get_current_time()//ms { timespec tmp_time; @@ -60,6 +60,22 @@ u64_t get_current_time_us() timespec tmp_time; clock_gettime(CLOCK_MONOTONIC, &tmp_time); return (uint64_t(tmp_time.tv_sec))*1000llu*1000llu+ (uint64_t(tmp_time.tv_nsec))/1000llu; +}*/ + +u64_t get_current_time()//ms +{ + //timespec tmp_time; + //clock_gettime(CLOCK_MONOTONIC, &tmp_time); + //return ((u64_t)tmp_time.tv_sec)*1000llu+((u64_t)tmp_time.tv_nsec)/(1000*1000llu); + return (u64_t)(ev_time()*1000); +} + +u64_t get_current_time_us() +{ + //timespec tmp_time; + //clock_gettime(CLOCK_MONOTONIC, &tmp_time); + //return (uint64_t(tmp_time.tv_sec))*1000llu*1000llu+ (uint64_t(tmp_time.tv_nsec))/1000llu; + return (u64_t)(ev_time()*1000*1000); } u64_t pack_u64(u32_t a,u32_t b) diff --git a/common.h b/common.h index 83b8ad1..e4cd32c 100644 --- a/common.h +++ b/common.h @@ -67,6 +67,7 @@ typedef short i16_t; typedef u64_t my_time_t; + const int max_data_len=3600; const int buf_len=max_data_len+200; diff --git a/main.cpp b/main.cpp index 4839d0e..d1b6db0 100644 --- a/main.cpp +++ b/main.cpp @@ -74,9 +74,39 @@ static void print_help() } +void sigpipe_cb(struct ev_loop *l, ev_signal *w, int revents) +{ + mylog(log_info, "got sigpipe, ignored"); +} + +void sigterm_cb(struct ev_loop *l, ev_signal *w, int revents) +{ + mylog(log_info, "got sigterm, exit"); + myexit(0); +} + +void sigint_cb(struct ev_loop *l, ev_signal *w, int revents) +{ + mylog(log_info, "got sigint, exit"); + myexit(0); +} + int main(int argc, char *argv[]) { + struct ev_loop* loop=ev_default_loop(0); + ev_signal signal_watcher_sigpipe; + ev_signal_init(&signal_watcher_sigpipe, sigpipe_cb, SIGPIPE); + ev_signal_start(loop, &signal_watcher_sigpipe); + + ev_signal signal_watcher_sigterm; + ev_signal_init(&signal_watcher_sigterm, sigterm_cb, SIGTERM); + ev_signal_start(loop, &signal_watcher_sigterm); + + ev_signal signal_watcher_sigint; + ev_signal_init(&signal_watcher_sigint, sigint_cb, SIGINT); + ev_signal_start(loop, &signal_watcher_sigint); + //working_mode=tunnel_mode; assert(sizeof(u64_t)==8);