struct log_buffer* buffers[LOG_ID_MAX];
struct buf_params buf_params;
int exiting;
+ struct timespec now;
};
struct socket_config_data {
return (ts->tv_sec - reader->last_read_time.tv_sec) * 1000 + (ts->tv_nsec - reader->last_read_time.tv_nsec) / 1000000;
}
-int reader_should_buffer(struct reader *reader, const struct buf_params *buf_params)
+int reader_should_buffer(struct reader *reader, const struct buf_params *buf_params, struct timespec now)
{
assert(reader);
assert(buf_params);
if (!reader_is_bufferable(reader))
return 0;
- struct timespec now;
- clock_gettime(CLOCK_MONOTONIC, &now);
-
if (reader_buffered_space(reader) < (uint64_t)buf_params->bytes && reader_ms_since(reader, &now) < (buf_params->time * 1000))
return 1;
struct reader *reader = (struct reader *)ptr;
struct logger *logger = (struct logger *)user_data;
- if (!logger->exiting && reader_should_buffer(reader, &logger->buf_params))
+ if (!logger->exiting && reader_should_buffer(reader, &logger->buf_params, logger->now))
return FALSE;
assert(reader->service_reader);
if (r < 0)
return r;
while (g_logger_run) {
+ clock_gettime(CLOCK_MONOTONIC, &server->now);
+
ensure_epoll_size(&events, &events_size, server->epollcnt);
int nfds = epoll_wait(server->epollfd, events, events_size, 1000);