static void * stats_loop(void *arg) { struct stats *st = arg; int n; for (;;) { n = epoll_wait(st->ep, &st->event, 1, st->interval); if (n < 0) { if (errno == EINTR) { continue; } log_error("epoll wait on e %d with event m %d failed: %s", st->ep, st->sd, strerror(errno)); break; } /* aggregate stats from shadow (b) -> sum (c) */ stats_aggregate(st); if (n == 0) { continue; } /* send aggregate stats sum (c) to collector */ stats_send_rsp(st); } return NULL; }
//合并stats信息,并接收客户端连接 通过epoll接收到客户端连接触发走到该函数 static void //可以通过客户端telnet 127.0.0.1 22222来获取 stats_loop_callback(void *arg1, void *arg2) {//interval超时时间调用stats_loop_callback一次,或者客户端请求获取stats也会调用stats_loop_callback struct stats *st = arg1; int n = *((int *)arg2); /* aggregate stats from shadow (b) -> sum (c) */ stats_aggregate(st); if (n == 0) { return; } /* send aggregate stats sum (c) to collector */ stats_send_rsp(st); }
static void stats_loop_callback(void *arg1, void *arg2) { struct stats *st = arg1; int n = *((int *)arg2); /* aggregate stats from shadow (b) -> sum (c) */ stats_aggregate(st); if (n == 0) { return; } /* send aggregate stats sum (c) to collector */ stats_send_rsp(st); }
static void * stats_loop(void *arg) { struct stats *st = arg; int n; for (;;) { n = event_wait(st->st_evb, st->interval); /* aggregate stats from shadow (b) -> sum (c) */ stats_aggregate(st); if (n == 0) { continue; } /* send aggregate stats sum (c) to collector */ stats_send_rsp(st); } return NULL; }