return get_dlogutil_params_from_argc_argv(argc, argv, params);
}
+
#include "log_buffer.h"
#include "logger_internal.h"
+#include <ptrs_list.h>
/**
* @brief Append to buffer
*log_buffer = lb;
return 0;
}
+
+static bool cond_reader_pipe_free(void *ptr, void *user_data)
+{
+ struct reader_pipe *reader = (struct reader_pipe *)ptr;
+ struct logger *logger = (struct logger *)user_data;
+ assert(reader);
+ // TODO: This is absurd, why isn't this in the reader_pipe_free function?
+ if (reader->common.fd_entity_sink.fd >= 0)
+ remove_fd_entity(&logger->epoll_common, &reader->common.fd_entity_sink);
+ if (reader->common.fd_entity_source.fd >= 0)
+ remove_fd_entity(&logger->epoll_common, &reader->common.fd_entity_source);
+ reader_pipe_free(reader);
+ return true;
+}
+
+/**
+ * @brief Free buffer
+ * @details Deallocate a buffer
+ * @param[in] buffer The buffer to deallocate
+ * @param[in] logger The server to remove buffer readers from fd loop
+ */
+void buffer_free(struct log_buffer *buffer, struct logger *logger)
+{
+ assert(buffer);
+
+ list_remove_if(&buffer->readers_pipe, logger, cond_reader_pipe_free);
+
+ socket_close(&buffer->sock_ctl);
+ socket_close(&buffer->sock_wr);
+
+ log_storage_free(buffer->log_storage_ptr);
+
+ free(buffer);
+}
int buffer_create(struct log_buffer **log_buffer, log_id_t buf_id, struct buffer_config_data *data);
int buffer_append(const dlogutil_entry_s *entry, struct log_buffer *b);
+void buffer_free(struct log_buffer *buffer, struct logger *logger);
return 0;
}
-static bool cond_reader_pipe_free(void *ptr, void *user_data)
-{
- struct reader_pipe *reader = (struct reader_pipe *)ptr;
- struct logger *logger = (struct logger *)user_data;
- assert(reader);
- // TODO: This is absurd, why isn't this in the reader_pipe_free function?
- if (reader->common.fd_entity_sink.fd >= 0)
- remove_fd_entity(&logger->epoll_common, &reader->common.fd_entity_sink);
- if (reader->common.fd_entity_source.fd >= 0)
- remove_fd_entity(&logger->epoll_common, &reader->common.fd_entity_source);
- reader_pipe_free(reader);
- return true;
-}
-
static bool cond_reader_logger_free(void *ptr, void *user_data)
{
struct reader_logger *reader = (struct reader_logger *)ptr;
return true;
}
-
-/**
- * @brief Free buffer
- * @details Deallocate a buffer
- * @param[in] buffer The buffer to deallocate
- * @param[in] logger The server to remove buffer readers from fd loop
- */
-static void buffer_free(struct log_buffer *buffer, struct logger *logger)
-{
- assert(buffer);
-
- list_remove_if(&buffer->readers_pipe, logger, cond_reader_pipe_free);
-
- socket_close(&buffer->sock_ctl);
- socket_close(&buffer->sock_wr);
-
- log_storage_free(buffer->log_storage_ptr);
-
- free(buffer);
-}
-
void qos_periodic_check(struct logger *server)
{
struct qos_module *const qos = &server->qos;