Exemplo n.º 1
0
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);
}
Exemplo n.º 3
0
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);
}
Exemplo n.º 4
0
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;
}