コード例 #1
0
void sink_manager_heartbeat(ip_t ip, uint8_t *buf)
{
    sink_t *sink = get_sink(ip);

    if (sink != NULL) {
        sink->last_heartbeat = util_time_now();
    } else {
        sink_t new_sink;
        if (sink_initialize(&new_sink, ip, buf) != RET_OK) {
            return;
        }
        new_sink.last_heartbeat = util_time_now();
        add_sink(new_sink);
    }
    
    purge_dead_sinks();
}
コード例 #2
0
void sink_manager_print_sinks()
{
    uint64_t now = util_time_now();

    if (list.nbr_sinks > 0) {
        log_info("Alive sinks:");
    }

    for (int i = 0; i < list.nbr_sinks; i++)
    {
        log_infof("  %s - last heartbeast %lus ago", inet_ntoa(list.sinks[i].ip), (now - list.sinks[i].last_heartbeat) / 1000);
    }
}
コード例 #3
0
static void purge_dead_sinks()
{
    uint64_t now = util_time_now();
    uint8_t purged_sinks = 0;

    for (int i = 0; i < list.nbr_sinks; i++)
    {
        if (now - list.sinks[i].last_heartbeat > (SINK_MANAGER_SINK_TIMEOUT * 1000))
        {
            if (purged_sinks == 0)
            {
                log_info("Purge sinks:");
            }

            log_infof("  %s - timed out. Uncontacted for %lus", inet_ntoa(list.sinks[i].ip), (now - list.sinks[i].last_heartbeat) / 1000);
            remove_sink(i);
            purged_sinks++;
        }
    }
}
コード例 #4
0
ファイル: util.cpp プロジェクト: FihlaTV/conference
double util_time_uptime()
{
	return util_time_now() - _time_start;
}
コード例 #5
0
ファイル: util.cpp プロジェクト: FihlaTV/conference
		if (itf == kvs.end()) {
			ok = false;
			snprintf(info, 1024, "'%s' not found", key);
			break;
		}

		key = va_arg(list, const char*);
	}
	va_end(list);

	return ok;	// 都存在
}

double util_time_now()
{
	struct timeval tv;
#ifdef WIN32
	ost::gettimeofday(&tv, 0);
#else
	gettimeofday(&tv, 0);
#endif
	return tv.tv_sec + tv.tv_usec/1000000.0;
}

static double _time_start = util_time_now();

double util_time_uptime()
{
	return util_time_now() - _time_start;
}