/* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */ /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens Copyright (c) 2006 - 2017 Thomas Schmitt Provided under GPL version 2 or later. */ #ifndef BURN__FILE_H #define BURN__FILE_H struct burn_source_file { char magic[4]; int datafd; int subfd; off_t fixed_size; }; /* ts A70126 : burn_source_file obsoleted burn_source_fd */ /* ts A70930 */ struct burn_source_fifo { char magic[4]; /* The fifo stays inactive and unequipped with eventual resources until its read() method is called for the first time. Only then burn_fifo_start() gets called, allocates the complete resources, starts a thread with burn_fifo_source_shoveller() which shovels data and finally destroys the resources. This late start is to stay modest in case of multiple tracks in one disc. */ int is_started; void *thread_handle; /* actually a pointer to a thread_t */ int thread_pid; int thread_is_valid; /* The shoveller aborts if this is 1. Resource leaks are possible. */ volatile int do_abort; /* the burn_source for which this fifo is acting as proxy */ struct burn_source *inp; int inp_read_size; /* <<< up to now it was only a pipe. This is on its way out. */ int outlet[2]; /* The ring buffer mechanism */ int chunksize; int chunks; char *buf; volatile int buf_writepos; volatile int buf_readpos; volatile int end_of_input; volatile int input_error; volatile int end_of_consumption; off_t in_counter; off_t out_counter; int total_min_fill; int interval_min_fill; int put_counter; int get_counter; int empty_counter; int full_counter; }; /** The worker behind the fifo thread. Gets started from burn_fifo_start() in async.c */ int burn_fifo_source_shoveller(struct burn_source *source, int flag); /* ts B00922 */ struct burn_source_offst { /* See burn_offst_source_new() */ struct burn_source *inp; struct burn_source *prev; off_t start; off_t size; int size_adjustable; /* for set_size/get_size */ int nominal_size; /* To help offst_free() */ struct burn_source *next; /* The current reading position */ int running; off_t pos; }; #endif /* LIBBURN__FILE_H */