static void reader_deinit_common(struct reader_common *reader)
{
+ if (reader->thread)
+ pthread_join(reader->thread, NULL);
+
list_clear_custom(&reader->subs, NULL, subreader_free);
if (reader->server) {
void reader_common_init(struct reader_common *reader, struct logger *server)
{
reader->server = server;
+ reader->thread = 0;
init_fd_entity(&reader->fd_entity_sink , NULL, NULL);
init_fd_entity(&reader->fd_entity_source, NULL, NULL);
}
reader_free(reader);
}
+int reader_run(struct reader_common *const reader)
+{
+ pthread_t thread;
+ int r = pthread_create(&thread, NULL, reader->thread_func, reader);
+ if (r < 0)
+ return r;
+
+ reader->thread = thread;
+ return 0;
+}
+
int reader_flush(struct reader_common *reader, struct timespec now_mono, int flush)
{
return list_foreach_ret(reader->subs, &(struct subreader_flush_args) {