mirror of https://github.com/yandex/odyssey.git
50 lines
1.1 KiB
C
50 lines
1.1 KiB
C
|
|
#include "err_logger.h"
|
|
|
|
od_error_logger_t *
|
|
od_err_logger_create(size_t intervals_count)
|
|
{
|
|
od_error_logger_t *err_logger = malloc(sizeof(od_error_logger_t));
|
|
if (err_logger == NULL) {
|
|
return NULL;
|
|
}
|
|
|
|
err_logger->intercals_cnt = intervals_count;
|
|
err_logger->current_interval_num = 0;
|
|
|
|
err_logger->interval_counters =
|
|
malloc(sizeof(od_counter_t) * intervals_count);
|
|
|
|
for (size_t i = 0; i < intervals_count; ++i) {
|
|
err_logger->interval_counters[i] = od_counter_create_default();
|
|
if (err_logger->interval_counters[i] == NULL)
|
|
return NULL;
|
|
}
|
|
|
|
pthread_mutex_init(&err_logger->lock, NULL);
|
|
|
|
return err_logger;
|
|
}
|
|
|
|
od_retcode_t
|
|
od_err_logger_free(od_error_logger_t *err_logger)
|
|
{
|
|
for (size_t i = 0; i < err_logger->intercals_cnt; ++i) {
|
|
int rc = od_counter_free(err_logger->interval_counters[i]);
|
|
if (rc != OK_RESPONSE)
|
|
return rc;
|
|
}
|
|
|
|
pthread_mutex_destroy(&err_logger->lock);
|
|
free(err_logger);
|
|
|
|
return OK_RESPONSE;
|
|
}
|
|
|
|
od_retcode_t
|
|
od_error_logger_store_err(od_error_logger_t *l, size_t err_t)
|
|
{
|
|
od_counter_inc(l->interval_counters[l->current_interval_num], err_t);
|
|
return OK_RESPONSE;
|
|
}
|