* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*/
-/** \file db.h data structures common to all database tools */
+/** \file db.h data structures common to all audio file selectors */
+
+#include <sys/select.h>
+
int find_audio_files(const char *dirname, int (*f)(const char *, const char *));
*
*
*/
-struct dbtool {
+struct audio_file_selector {
/**
* name name of this database tool
*/
* again via the cdt command).
*
* If \a init() returns success (non-negative return value), it must have
- * initialized in all non-optional function pointers of the given dbtool
+ * initialized in all non-optional function pointers of the given selector
* struct. Moreover, \a cmd_list must point to a NULL-terminated array which
* holds the list of all commands that are supported by this database tool.
*/
-int (*init)(struct dbtool *self);
+int (*init)(struct audio_file_selector *self);
/**
- * list of commands supported by this dbtool
+ * list of commands supported by this selector
*/
struct server_command *cmd_list;
/**
* 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
* 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 selector 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 selector 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*);
+int mysql_selector_init(struct audio_file_selector*);
+int plm_selector_init(struct audio_file_selector*);
+int random_selector_init(struct audio_file_selector*);