- int (*open)(struct writer_node *);
- int (*write)(char *data, size_t nbytes, struct writer_node *);
+ /**
+ * The command line parser of the writer.
+ *
+ * It should check whether the command line options given by \a argv
+ * and \a argc are valid and return a pointer to the writer-specific
+ * configuration data determined by these options. This function must
+ * either succeed or call exit(). Note that parse_config_or_die() might
+ * be called more than once with different values of \a options. \sa
+ * \ref free_config().
+ */
+ void *(*parse_config_or_die)(int argc, char **argv);
+ /**
+ * Dellocate all configuration resources.
+ *
+ * This should free whatever was allocated by \ref parse_config_or_die().
+ */
+ void (*free_config)(void *config);
+ /**
+ * Prepare the fd sets for select.
+ *
+ * This is called from scheduler. It may use the sched pointer to add
+ * any file descriptors or to decrease the select timeout.
+ */
+ void (*pre_select)(struct sched *s, struct task *t);
+ /**
+ * Write audio data.
+ *
+ * Called from the post_select function of the writer node's task.
+ */
+ int (*post_select)(struct sched *s, struct task *t);
+ /**
+ * Close one instance of the writer.
+ *
+ * This function is assumed to succeed.
+ */