X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=db.h;h=3347d3ad239d5fd2d364c99083278f0b0b967a8e;hp=5f9f2cbf4b9f7c53a383d03ef36529a8911f5a67;hb=7437db8478f031f6f4b0dd43314c0e84d5263e10;hpb=c589157169366fa47f2041cfe52e7019fbc19b35 diff --git a/db.h b/db.h index 5f9f2cbf..3347d3ad 100644 --- a/db.h +++ b/db.h @@ -18,6 +18,15 @@ /** \file db.h data structures common to all database tools */ +#include + +enum supported_dbtools {DBT_DOPEY, +#ifdef HAVE_MYSQL + DBT_MYSQL, +#endif + NUM_DBTOOLS +}; + int find_audio_files(const char *dirname, int (*f)(const char *, const char *)); /** @@ -78,7 +87,7 @@ char **(*get_audio_file_list)(unsigned int num); * passed \a update_audio_file(). * */ -void (*update_audio_file)(char *audio_file); +void (*update_audio_file)(char *audio_file); /** * * shutdown this database tool and free all resources @@ -86,10 +95,36 @@ void (*update_audio_file)(char *audio_file); * This gets called whenever the database tool changes (via the cdt command), * or when para_server receives the HUP signal, or when para_server shuts down. * It is assumed to succeed. -*/ + */ void (*shutdown)(void); +/** + * + * add file descriptors to fd_sets + * + * The pre_select function of the activated database tool gets called just + * before para_server enters its main select loop. The dbtool may add its own + * file descriptors to the \a rfds or the \a wfds set. + * + * If a file descriptor was added, \a max_fileno must be increased by + * this function, if neccessary. + * + * \sa select(2) + */ +int (*pre_select)(fd_set *rfds, fd_set *wfds); +/** + * handle the file descriptors which are ready for I/O + * + * If the pre_select hook added one ore more file descriptors to the read or write + * set, this is the hook to check the result and do any I/O on those descriptors + * which are ready for reading/writing. + */ +void (*post_select)(fd_set *rfds, fd_set *wfds); +/** + * each dbtool has its private data pointer */ +void *private_data; }; int mysql_dbtool_init(struct dbtool*); +int plm_dbtool_init(struct dbtool*); int random_dbtool_init(struct dbtool*);