odyssey/sources/err_logger.c

50 lines
1.1 KiB
C
Raw Normal View History

2020-07-08 06:26:17 +00:00
#include "err_logger.h"
od_error_logger_t *
od_err_logger_create(size_t intervals_count)
{
2020-07-09 05:19:34 +00:00
od_error_logger_t *err_logger = malloc(sizeof(od_error_logger_t));
if (err_logger == NULL) {
return NULL;
}
2020-07-08 06:26:17 +00:00
2020-07-09 05:19:34 +00:00
err_logger->intercals_cnt = intervals_count;
err_logger->current_interval_num = 0;
2020-07-08 06:26:17 +00:00
2020-07-09 05:19:34 +00:00
err_logger->interval_counters =
malloc(sizeof(od_counter_t) * intervals_count);
2020-07-08 06:26:17 +00:00
for (size_t i = 0; i < intervals_count; ++i) {
2020-07-09 05:19:34 +00:00
err_logger->interval_counters[i] = od_counter_create_default();
if (err_logger->interval_counters[i] == NULL)
return NULL;
2020-07-08 06:26:17 +00:00
}
2020-07-09 05:19:34 +00:00
pthread_mutex_init(&err_logger->lock, NULL);
2020-07-08 06:26:17 +00:00
2020-07-09 05:19:34 +00:00
return err_logger;
2020-07-08 06:26:17 +00:00
}
od_retcode_t
2020-07-09 05:19:34 +00:00
od_err_logger_free(od_error_logger_t *err_logger)
2020-07-08 06:26:17 +00:00
{
2020-07-09 05:19:34 +00:00
for (size_t i = 0; i < err_logger->intercals_cnt; ++i) {
int rc = od_counter_free(err_logger->interval_counters[i]);
2020-07-08 06:26:17 +00:00
if (rc != OK_RESPONSE)
return rc;
}
2020-07-09 05:19:34 +00:00
pthread_mutex_destroy(&err_logger->lock);
free(err_logger);
2020-07-08 06:26:17 +00:00
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;
}